我有一个名为 flightbooking 的表。该表由字段组成,包括标有“R”或“C”的状态、已保留和已取消。
我想弄清楚的是允许删除状态为“C”的记录,但如果下一行的状态为“R”,则不应删除。
[编辑]:我忘了补充一点,我需要从 leadcustomer 表中删除一条客户记录。
所以总结一下如果CustomerID为2且status = 'C' 客户记录可以被删除。 否则,如果 CustomerID 为 3 且 status = 'R',则无法删除客户记录。
此外,通过使用
DELETE FROM leadcustomer
WHERE CustomerID = 2;
(此 CustomerID 记录的状态为“C”,因此我应该可以删除它,但外键违反了约束。)
最佳答案
当你想要有行间依赖时,通常你必须使用窗口函数。以下可能会起到作用:
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') ;
关于sql - 删除具有特定状态值的行(客户),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43308620/