删除具有特定状态值的行(客户)

时间:2017-04-09 15:36:52

标签: sql postgresql sql-delete

我有一个名为flightbooking的表。该表包含字段,包括标有' R'或者' C',保留和取消。

Flightbooking Table

我想弄清楚的是允许删除状态为' C'但如果下一行的状态为' R'它不应该被删除。

[编辑]:我忘了添加我需要从leadcustomer表中删除客户记录。

总结如果CustomerID为2且status =' C'客户记录可以删除。 如果CustomerID为3且状态=' R'客户记录无法删除。

此外,使用

DELETE FROM leadcustomer
WHERE CustomerID = 2;

(此CustomerID记录的状态=' C'所以我应该能够删除它,但是外键违反了约束。)

1 个答案:

答案 0 :(得分:0)

如果要拥有行间依赖关系,则必须经常使用窗口函数。以下可能会起到作用:

DELETE FROM flightbooking WHERE 
    flightbooking.id = (SELECT id FROM (
        SELECT id,status,lead(status) OVER (ORDER BY id) FROM flightbooking) a 
    WHERE a.status='C' AND a.lead <> 'R') ;