sql - 无法获取具有排名的重复数据删除记录
问题描述
我正在尝试使用排名对我的数据集进行重复数据删除,但它没有为第二条记录分配不同的数字。我在这里做错了什么?
with get_rank as (
select id, code, rank() over (partition by id order by z.rowid) as ranking
from mytable z
)
select *
from get_rank
where ranking = 1
and id = 72755
ID CODE RANKING
---------- ---- ----------
72755 M 1
72755 M 1
解决方案
使用row_number()
:
with get_rank as (
select id, code,
row_number() over (partition by id order by z.rowid) as ranking
from mytable z
)
select *
from get_rank
where ranking = 1 and id = 72755;
保证为每一行返回不同的值。
推荐阅读
- docker - 不同的结果 COPY 和 ADD DockerFile
- javascript - 如何在猜谜游戏中添加高级响应?
- python - 处理自定义用户模型 Django-Allauth
- ios - 视图控制器中未观察到完成启动通知吗?
- android - 在 React Native 中如何使用录制的语音响应来电
- .net - Azure Build Pipeline:如何在工件中包含其他项目?
- ios - 如何更新 iOS 中覆盖supportedInterfaceOrientations 函数的旧Swift 代码?
- c++ - 何时检查 C++ 集/映射中是否已存在项目?
- javascript - 将 HTML 标记添加到 jQuery 添加的 div
- python - 使用正则表达式跳过结果