根据另一列的条件删除行

问题描述 投票:0回答:1

这是它的图片

我正在尝试在 SQL Server 中工作,只是它更容易在 Excel 中显示它。

我有两列:卡号和评论。 如果一个卡号在我的数据库中存在两次,并且它有一行带有“已纠正”注释,并且也存在带有“已关闭”注释的行,那么我需要删除带有“已纠正”注释的行。 我不知道如何管理它,我尝试使用存在,但它不起作用。 谢谢大家。

我试过了

SELECT 
* 
FROM TABLE1 
WHERE EXISTS(SELECT CARDNUMBER, COMMENT FROM TABLE1 WHERE COMMENT IN ('CORRECTED', 'CLOSED')

但是不起作用。

sql duplicates exists
1个回答
0
投票

这是一种使用可删除 CTE 的方法:

WITH cte AS (
    SELECT *, COUNT(CASE WHEN comment = 'closed' THEN 1 END)
                  OVER (PARTITION BY cardnumber) AS closed_cnt
    FROM Table1
)

DELETE
FROM cte
WHERE comment = 'corrected' AND closed_cnt > 0;
© www.soinside.com 2019 - 2024. All rights reserved.