SQL查询<>甚至填充空白行

时间:2018-01-08 09:26:14

标签: mysql sql sql-server toad

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

2 个答案:

答案 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