【发布时间】:2018-01-08 09:26:13
【问题描述】:
我有 2 个包含 4,00,000 + 条记录的表: 表 A(列:编号和分类)和表 B(列:编号和分类)。我必须从两个不相等的表中提取代码。
SELECT DISTINCT
a.number,
a.classification,
b.classification
FROM TableA a
LEFT OUTER JOIN TableB b
ON b.number = a.number
AND a.classification != b.classification;
此查询填充所有不相等的记录,包括空白行。我想要一个没有空白行的查询。
所以我在查询中添加了另一行:
SELECT DISTINCT
a.number,
a.classification,
b.classification
FROM TableA a
LEFT OUTER JOIN TableB b
ON b.number = a.number
AND a.classification != b.classification
AND a.classification IS NOT NULL
AND b.classification IS NOT NULL;
但是上面的查询运行了 35 分钟并且没有生成任何记录。有人可以帮我找一个替代方案吗?
【问题讨论】:
-
mysql != sql server,未涉及的产品请勿标注。
-
您可以添加一些示例数据和预期输出吗?确保在它们可以存在的地方包含一些
NULL值。 -
嗨。你不清楚。例如“从两个表中提取不相等的代码”。是无法理解的。使用足够的单词、短语和句子来清楚地指代事物及其部分。请阅读minimal reproducible example 并采取行动。了解
outer join on返回的内容:inner join on返回的内容以及由空值扩展的不匹配的左表行。另请阅读比较中的空值:对于!=为真,两个操作数都不能为空,因此添加andis not null什么都不做。之后还应用where。
标签: mysql sql sql-server toad