gpt4 book ai didi

sql - 删除sql中所有重复的行

转载 作者:行者123 更新时间:2023-12-04 08:07:27 25 4
gpt4 key购买 nike

我有这样的 table

|-------------------------|
| A | B | C |
|-------------------------|
| 1 | 2 | 5 |
|-------------------------|
| 1 | 2 | 10 |
|-------------------------|
| 1 | 2 | 2 |
|-------------------------|

我需要删除所有具有等于 A nad B 值和较低 C 值的重复行

在运行 sql 脚本后,对于每个等于 A 和 B 的列,我只需要具有最高 C 值的这一行

|-------------------------|
| A | B | V |
|-------------------------|
| 1 | 2 | 10 |
|-------------------------|

最佳答案

一种方法是窗口函数:

select t.*
from (select t.*,
row_number() over (partition by a, b order by v desc) as seqnum
from t
) t
where seqnum = 1;

这会返回整行,如果您需要额外的列,这会很方便。如果您真的只需要这三列,则聚合可以满足您的需求:

select a, b, max(v)
from t
group by a, b;

在标准 SQL 中,您可以使用以下方法仅保留最大值:

delete from t
where t.v < (select max(t2.v) from t t2 where t2.a = t.a and t2.b = t.b);

关于sql - 删除sql中所有重复的行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66154455/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com