在Npgsql中似乎没有对IN子句的标准支持。我看到推荐使用= ANY而不是IN的帖子。这可以很好地替代标准的IN子句。但是,Postgres (pgsql)似乎没有任何允许您执行NOT ANY或!=ANY查询的功能。然而,它确实支持NOT IN,但看起来Npgsql不支持。有没有人可以帮我理解如何编写这样的Npgsql兼容查询:
select * my_table where id NOT IN(1,2,3,4)发布于 2016-12-03 00:41:52
首先,这与Npgsql无关--这是一个PostgreSQL问题。
其次,PostgreSQL确实具有对IN子句的完全标准支持。理解IN和ANY之间的区别很重要:IN操作行,而ANY操作数组-这两者绝对不同,即使您可以将一个转换为另一个(例如,参见unnest)。Read the docs carefully。
最后,回答你的问题..。说WHERE x != ANY(some_array)意味着“some_array中有一些元素不等于x”。这确实与您想要的不同,即“其中某些_array的元素都不等于x”。您可以使用WHERE x != ALL(some_array)来实现后者:它针对每个元素检查x,只有当所有元素都不相等时才返回true。
您还可以使用带有简单逻辑否定的ANY:WHERE NOT (x = ANY(SOME_ARRAY))。
https://stackoverflow.com/questions/40936676
复制相似问题