【发布时间】:2020-10-29 13:45:54
【问题描述】:
我在数据库中有两个表(table1,table2)(均为 InnoDB 类型)。他们都有一个专栏“文章”。在table1中“article”是主索引,在table2中“article”被定义为“unique”。这两个列的数据类型为varchar(32),也是相同的排序规则。
我正在尝试获取 table1 中但不在 table2 中的所有“文章”值的列表。
table1 包含大约 5000 行,table2 包含大约 3000 行,因此我应该得到至少 2000 个“文章”值作为结果。我的查询如下所示:
SELECT article FROM table1
WHERE article NOT IN
(SELECT article FROM table2);
但这会返回一个空结果...
当我反过来做时(即从 table2 中选择所有不在 table1 中的“文章”),它可以工作,该查询返回大约 700 个值。
我想这一定与两个表中“文章”的不同索引/唯一状态有关。但是如何修改查询以使其正常工作?
【问题讨论】:
-
我的第一反应是查看相关列中的数据类型是否匹配。
-
我忘了补充一点:是的,这两列的数据类型都是
varchar(32),也是相同的排序规则。