我有表: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。 –