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