SELECT "Ticket_ID" FROM "Tickets" WHERE "Status" = 1 AND ("Ticket_ID" != ANY(array[1,2,3])) limit 6
结果是1,3,4,5,6
你想使用ALL,而不是任何。从 fine manual:9.21.3. ANY/SOME (array)
06000
[…] The left-hand Expression is evaluated and compared to each element of the array using the given operator,which must yIEld a Boolean result. The result of
ANY
is “true” if any true result is obtained.
所以如果我们这样说:
1 != any(array[1,2])
那么我们会得到真实的,因为(1!= 1)或(1!= 2)是真的。任何本质上是一个OR运算符。例如:
=> select ID from (values (1),(2),(3)) as t(ID) where ID != any(array[1,2]); ID ---- 1 2 3(3 rows)
如果我们看看ALL
,we see:
9.21.4. ALL (array)
06003
[…] The left-hand Expression is evaluated and compared to each element of the array using the given operator,which must yIEld a Boolean result. The result of
ALL
is “true” if all comparisons yIEld true…
所以如果我们这样说:
1 != all(array[1,2])
那么我们会得到错误,因为(1!= 1)和(1!= 2)是假的,我们看到ALL本质上是一个AND运算符。例如:
=> select ID from (values (1),(3)) as t(ID) where ID != all(array[1,2]); ID ---- 3(1 row)
如果要排除数组中的所有值,请使用ALL:
select "Ticket_ID"from "Tickets"where "Status" = 1 and "Ticket_ID" != all(array[1,3])limit 6总结
以上是内存溢出为你收集整理的数组 – 具有“ANY”的PostgreSQL查询不起作用全部内容,希望文章能够帮你解决数组 – 具有“ANY”的PostgreSQL查询不起作用所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)