我有一个如图所示的表。在number列中,值出现了不止一次(例如63出现了两次)。我只想保留一个值。请看我的代码:从t1删除
(SELECT *,row_number() OVER ( PARTITION BY Number ORDER BY Date) as rn from t1 where rn > 1)
它显示错误。有人能帮忙吗。在此处输入图像描述
gstyhher1#
您的主查询没有访问由row\ u number()创建的列,为了启用该功能,您可以创建一个快速子查询并使用所需的筛选器
SELECT * FROM ( SELECT *, row_number() OVER (PARTITION BY Number ORDER BY Date) as rn FROM t1 ) T where rn = 1;
vwoqyblh2#
这个 partition by 确定行号如何重复。行号是按组分配的 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
eit6fx6z3#
如果只想保留一个值,则rn=1而不是“>1”
3条答案
按热度按时间gstyhher1#
您的主查询没有访问由row\ u number()创建的列,为了启用该功能,您可以创建一个快速子查询并使用所需的筛选器
vwoqyblh2#
这个
partition by
确定行号如何重复。行号是按组分配的partition by
钥匙。所以,你可以得到复制品。如果您希望所有行都有一个唯一的行号,只需省略
partition by
:eit6fx6z3#
如果只想保留一个值,则rn=1而不是“>1”