SQL 查询 <> 甚至填充空行

SQL query <> populates even blank rows

我有 2 tables 有 4,00,000 + 条记录: Table A(列:数量和分类)和 Table B(列:数量和分类)。我必须从不相等的 table 中提取代码。

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 分钟并没有生成任何记录。有人可以帮我换一个吗?

你快到了:

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;

首先寻找相等的,然后 select 找不到的。

或者,因为您显然想要 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;

请试试这个 -> 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