要循环的SQL查询

要循环的SQL查询,sql,relational-division,Sql,Relational Division,我有两张表TravelHistory和LikesToVisit 两者都有两个字段,SSN和AirportId 查询客户是否访问了他喜欢访问的所有城市是什么 非常感谢您的帮助。这将为您提供一份没有去过他们喜欢的地方的人的无差别名单 SELECT * FROM LikesToVisit AS lv LEFT OUTER JOIN TravelHistory AS th ON lv.SSN = th.SSN AND lv.AirportID = th.AirportID WHERE lv.SSN =

我有两张表
TravelHistory
LikesToVisit

两者都有两个字段,
SSN
AirportId

查询客户是否访问了他喜欢访问的所有城市是什么


非常感谢您的帮助。

这将为您提供一份没有去过他们喜欢的地方的人的无差别名单

SELECT * FROM LikesToVisit AS lv LEFT OUTER JOIN TravelHistory AS th ON lv.SSN = th.SSN AND lv.AirportID = th.AirportID WHERE lv.SSN = NULL
或者,也可以使用子查询

SELECT * FROM LikesToVisit AS lv WHERE lv.SSN NOT IN (SELECT SSN FROM TravelHistory AS th WHERE th.SSN = lv.SSN AND th.AirportID = lv.AirportID)

该查询将提供他喜欢访问和尚未访问的所有城市

SELECT SSN, Airportid
  FROM LikesToVisit
MINUS
SELECT SSN, Airportid
  FROM TravelHistory
选择所有不在上述结果集中的SSN将为您提供访问过所有他喜欢的人的列表

SELECT SSN, 'Visited all he liked' 
  FROM Travelhistory 
 WHERE SSN not in (select distinct SSN 
                     FROM( SELECT SSN, Airportid
                             FROM LikesToVisit
                            MINUS
                           SELECT SSN, Airportid
                             FROM TravelHistory)

请注意,在中对大多数数据库使用
通常非常慢(尤其是在处理子查询中的大型记录集时!)。从个人经验来看,使用连接通常要快得多。