我有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;
此查询会填充不相等的所有记录,包括BLANK行。我想要一个没有空行的查询。
所以我在查询中添加了另一行:
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分钟并且没有生成任何记录。有人可以帮我替代吗?
答案 0 :(得分:1)
你快到了那里:
select distinct a.number, a.classification, b.classification
from TableA a
left join TableB b
on b.number = a.number
and a.classification = b.classification
where b.number is null;
首先,您要查找相同的那些,然后选择那些未找到的那些。
或者,因为你显然想要b.classification值:
select distinct a.number, a.classification, b.classification
from TableA a
left join TableB b
on b.number = a.number
where a.classification != b.classification;
答案 1 :(得分:0)
请试试这个 - > a.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 <> '' AND a.classification IS NOT NULL
AND b.classification <> '' AND b.classification IS NOT NULL