为什么我无法 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_1
的 col1
中不在 table_2
的 col1
中的所有记录。实际上,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);
我有两个table喜欢:
table_1:
col1
A
B
C
D
table_2
col1
B
D
F
E
期望的输出:
A
C
我想 select table_1
的 col1
中不在 table_2
的 col1
中的所有记录。实际上,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);