sql—避免表中特定列的重复记录

tyg4sfes  于 2021-07-24  发布在  Java
关注(0)|答案(3)|浏览(327)

我有一个如图所示的表。在number列中,值出现了不止一次(例如63出现了两次)。我只想保留一个值。请看我的代码:从t1删除

(SELECT *,row_number() OVER (          
          PARTITION BY 
            Number
          ORDER BY 
            Date) as rn from t1  where   rn > 1)

它显示错误。有人能帮忙吗。
在此处输入图像描述

gstyhher

gstyhher1#

您的主查询没有访问由row\ u number()创建的列,为了启用该功能,您可以创建一个快速子查询并使用所需的筛选器

SELECT *
FROM
(
SELECT *,
row_number() OVER (PARTITION BY Number ORDER BY Date) as rn 
FROM t1 ) T
where rn = 1;
vwoqyblh

vwoqyblh2#

这个 partition by 确定行号如何重复。行号是按组分配的 partition by 钥匙。所以,你可以得到复制品。
如果您希望所有行都有一个唯一的行号,只需省略 partition by :

select t1.*
from (select t1.*,
            row_number() over (order by date) as rn        
      from t1 
     ) t1
where rn > 1
eit6fx6z

eit6fx6z3#

如果只想保留一个值,则rn=1而不是“>1”

相关问题