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
我有 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