使用SQL中的笛卡尔积删除一行

时间:2014-09-26 10:17:27

标签: sql psql

我有一个带有两个表的数据库:

航班表:

code start end 
1 Madrid London 

预订表:

flight_code passport_number price 
1           12345678        100

第二张桌子的“flight_code”引用了第一张桌子的代码,因为预订只能在数据库中已经存在的航班上进行。

如果我想查看从马德里开始的预订航班的所有人的护照号码,我会这样做:

SELECT passport_number FROM bookings, flights WHERE flight_code=code AND start = 'Madrid';

在这种情况下返回12345678。

但是,如果我要删除在马德里开始的所有预订(三个字段),我应该使用什么sql命令?

要查看航班是否在马德里开始,我应该使用第一张表的代码查看fligth_code,就像我选择的代码一样,但我不知道如何使用DELETE ... < / p>

1 个答案:

答案 0 :(得分:0)

DELETE FROM Bookings 
WHERE EXISTS (SELECT 1 
              FROM Flights 
              WHERE flight_code = code
               AND start = 'Madrid')