我有表:SQL相關同桌的子查詢
Person(SSN, name, address)
Car(license, year, model)
Accident(license, accident-date, driver, damage-amount)
Owns(SSN, license)
問題問:
查找已參與了超過一個意外的所有汽車的牌照號碼(不返回DUPLICATES )。
答案之一是:
SELECT DISTINCT A1.license
FROM Accident A1
WHERE A1.license IN (SELECT A2.license
FROM Accident A2
WHERE A1.accident-date <> A2.accident-date)
它從未將檢查A1.license = A2.license在相關子查詢。因此,據我瞭解,即使兩個元組擁有不同的許可證,子查詢也會檢查A1中的元組是否具有與A2中的元組不同的事件日期。所以這不應該是錯誤的?
編輯:它假定一輛汽車在一天中不能有多個事故。
這個「答案」顯然是錯誤的,如果'Accident'中有多個日期,它將返回* all *行。正如你所說的那樣,缺少'AND A1.license = A2.license'。 – dnoeth
哪種RDBMS適用於?請添加一個標籤來指定您是使用'mysql','postgresql','sql-server','oracle'還是'db2' - 或者其他的東西。 –
這個問題沒有指定,但由於我的課是學習只是MySQL,我已經標記了mysql。 –