-1
我有兩個表TravelHistory
和LikesToVisit
。SQL查詢循環通過
兩者都有兩個字段,SSN
和AirportId
。
如果客戶訪問了所有他喜歡訪問的城市,查詢的內容是什麼?
任何幫助,非常感謝。
我有兩個表TravelHistory
和LikesToVisit
。SQL查詢循環通過
兩者都有兩個字段,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)
注意使用'in'與人的名單最DB的往往很是緩慢(尤其是在處理子查詢中的大型記錄集時!)。從個人經驗來看,使用連接通常要快得多。 – user2366842