SELECT something FROM somewhere WHERE something IN (a, b, c)
产生正常的结果,而且,奇怪NOT IN操作符行为
SELECT something FROM somewhere WHERE something NOT IN (a, b, c)
应该给我从柱东西所有结果表地方,但它给了我很多次以上随机重复行比在桌子上。互联网上的所有NOT IN例子都带有文本字符串,我正在处理数字,有什么不同吗?
SELECT something FROM somewhere WHERE something IN (a, b, c)
产生正常的结果,而且,奇怪NOT IN操作符行为
SELECT something FROM somewhere WHERE something NOT IN (a, b, c)
应该给我从柱东西所有结果表地方,但它给了我很多次以上随机重复行比在桌子上。互联网上的所有NOT IN例子都带有文本字符串,我正在处理数字,有什么不同吗?
在结果中接收“多次多”的行几乎总是不正确的连接的结果。检查FROM子句中的JOIN语句和/或您在WHERE子句中指定的任何表关系。
确保您没有在FROM子句中包含任何未正确连接到SELECT语句中的其他表的表。
祝你好运!
嗯,如何测试没有不正确的连接,当postgresql不给我任何错误和IN测试返回我正确的结果。 – Euphorbium
没有“真正”的查询,很难说这是怎么回事...
达说,并增加了迈克尔的回答,请务必不要在not in
条款具有空值,作为语义与看似相反的in
子句的语义完全不同:
select a from b where a in (1, null); -- rows where a = 1
select a from b where a not in (1, null); -- no rows, since x <> null is null
null既不匹配也不匹配一个值 - 即任何测试(除'null之外)都是错误的。如果列表中只有一个值为空,则比较将始终为假 – Bohemian
您的'select'语句真的很简单,还是加入多个表? – meagar
没办法。你的数据一定有问题。 ** IN/NOT IN **操作应该像您所描述的那样行事。 –
另外,在数字中没有使用'not in()'的特殊规则,它的行为与预期完全相同。请更新问题以包含您的实际查询,因为按照现状,您的问题不能回答 - “in/not in”只是不按照您描述的方式行事。 – meagar