Sql 删除CTE表中具有条件的记录
嗨,我有一张CTE桌子,看起来像这样:Sql 删除CTE表中具有条件的记录,sql,jupyter-notebook,common-table-expression,Sql,Jupyter Notebook,Common Table Expression,嗨,我有一张CTE桌子,看起来像这样: id prsn A B C 1 2 0 0 1 1 3 0 1 0 2 1 0 1 1 2 1 0 1 0 2 2 1 0 1 3 1 0 1 0 3 1 0 1 1 我想删除“id”和“prsn”列中重复的记录 确定将删除其列“C”>0的哪个记录的条件 因此,如果原始数据在“id”和“prsn”上重复,我希望将原始数据保留为“C”>0
id prsn A B C
1 2 0 0 1
1 3 0 1 0
2 1 0 1 1
2 1 0 1 0
2 2 1 0 1
3 1 0 1 0
3 1 0 1 1
我想删除“id”和“prsn”列中重复的记录
确定将删除其列“C”>0的哪个记录的条件
因此,如果原始数据在“id”和“prsn”上重复,我希望将原始数据保留为“C”>0
预期产出:
id prsn A B C
1 2 0 0 1
1 3 0 1 0
2 1 0 1 1
2 2 1 0 1
3 1 0 1 1
我正在使用jupyter中的CTE表来测试一条记录是否唯一,您可以使用SQL中的row_number()函数创建D列。这使您可以重置每个唯一记录的行号,以便删除行号未重置且大于1的任何非唯一记录。 这就是:
with CTE as
(select row_number() over (partition by id, prsn order by id, prsn) as D from yourdata)
delete from CTE where D > 1 and C = 0
用您正在使用的数据库标记您的问题。此外,什么是“CTE表”。不能从CTE中删除行。