我有兩張桌子,例如:
table_1:
col1
A
B
C
D
table_2
col1
B
D
F
E
期望的輸出:
A
C
我想選擇所有不在col1的記錄。實際上,有 65000 多行,大約有 2000 行。我的查詢:table_1col1table_2table_1table_2
SELECT col1
FROM table_1
WHERE col1 NOT IN (SELECT col1 FROM table_2)
這不回傳任何記錄。但是,當我選擇所有table_2不存在于table_1. 我已經仔細檢查了我在兩個表中都有記錄,并且在手動檢查值是否存在時通過執行以下操作:
SELECT * FROM table_2 WHERE col1 = 'C'
這不會產生預期的記錄。我也做過:
SELECT col1
FROM table_1
WHERE col1 IN (SELECT col1 FROM table_2)
這會按預期生成所有相互記錄。我也做過:
SELECT col1
FROM table_2
WHERE col1 NOT IN (SELECT col1 FROM table_1)
這會產生所有table_2不table_1符合預期的記錄。
為什么我的查詢對一個表中的記錄不起作用,而另一個表中的記錄不起作用?
uj5u.com熱心網友回復:
從您所展示的內容中,您可以看到不存在的標準是否符合目的。如果這沒有按預期作業,那么幾乎可以肯定有一些不同的東西,例如排序規則,我們不知道。
select col1
from table_1 t1
where not exists (select * from table_2 t2 where t2.col1 = t1.col1);
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/454994.html
上一篇:當我的結果可能是FLOAT而不是INTEGER時,如何在計算一組值的平均值時將FLOAT合并到我的查詢中以避免錯誤
