SQL显示2个表之间的差异

时间:2016-05-05 10:57:43

标签: sql

我知道有类似的问题,但我无法找到解决方案。

首先,我有2张桌子:

  • SD.Airlines(16k +行)
  • SD.AirlineRatings(405行)

我需要在SD.Airlines中查找SD.AirlineRatings中的哪些记录,我这样做了:

SELECT b.Name AS Airline FROM SD.Airlines b
LEFT JOIN SD.AirlineRatings a ON a.AirlineName = b.Name
WHERE a.AirlineName IS NOT NULL;

工作正常,向我展示了249/405条记录。现在......如果我需要将这些249条记录与SD.AirlineRatings进行比较,并检查哪些记录没有。

我打赌答案很简单,但我不太了解SQL。

由于

1 个答案:

答案 0 :(得分:2)

如果您希望AirLines评分中的记录同样位于Airlines,那么我建议EXISTSIN

select a.*
from sd.Airlines a
where exists (select 1 from sd.AirlineRatings ar where ar.AirlineName = a.Name);

如果您想要未经评级的航空公司:

select a.*
from sd.Airlines a
where not exists (select 1 from sd.AirlineRatings ar where ar.AirlineName = a.Name);

而且,如果您希望航空公司的评级不存在,您可以在查询中交换这两个表。