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

标签 sql postgresql sql-delete

我有一个名为 flightbooking 的表。该表由字段组成,包括标有“R”或“C”的状态、已保留和已取消。

Flightbooking Table

我想弄清楚的是允许删除状态为“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/

相关文章:

mysql - 如何在 MySQL 中重置 AUTO_INCRMENT

Php mysql只更新空列

sql - 如何在 SQL Server 中使用带有框架的窗口函数执行 COUNT(DISTINCT)

MySQL - 删除有条件的行

sql查询如何删除具有5列相同的行并在Postgres中保留1列

c# - 使用 asp.net 的 SQL Server View

mysql - SQL:我们需要 ANY/SOME 和 ALL 关键字吗?

postgresql - 为什么开放街道 map (OSM) 使用 PostgreSQL 数据库?

ruby-on-rails - rails : storing datatype in a column?

php - 删除所有非重复行但保留一个