我知道有类似的问题,但我无法找到解决方案。
首先,我有2张桌子:
我需要在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。
由于
答案 0 :(得分:2)
如果您希望AirLines
评分中的记录同样位于Airlines
,那么我建议EXISTS
或IN
:
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);
而且,如果您希望航空公司的评级不存在,您可以在查询中交换这两个表。