Sql 删除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

嗨,我有一张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    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中删除行。