为什么我无法 select 一个 table 中的所有记录,而另一个 table 中不存在?

Why am I unable to select all records in one table that don't exist in another table?

我有两个table喜欢:

table_1:

col1
A
B
C
D


table_2

col1
B
D
F
E

期望的输出:

A
C

我想 select table_1col1 中不在 table_2col1 中的所有记录。实际上,table_1 有 65000 多行,table_2 有大约 2000 行。我的查询:

SELECT col1
FROM table_1
WHERE col1 NOT IN (SELECT col1 FROM table_2)

此returns暂无记录。但是,当我 select table_2 中不存在于 table_1 中的所有记录时,反向工作按预期进行。我已经仔细检查过我在两个 table 中都有记录,并且在通过以下方式手动检查值是否存在时:

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 中的所有记录。

为什么我的查询不适用于一个 table 而另一个

中的记录?

根据您所展示的内容,您可以看出 不存在 标准是否符合目的。如果这没有按预期工作,那么几乎可以肯定存在我们不知道的不同之处,例如排序规则。

select col1
from table_1 t1
where not exists (select * from table_2 t2 where t2.col1 = t1.col1);