gpt4 book ai didi

sql - 选择没有唯一键的单行

转载 作者:行者123 更新时间:2023-12-02 13:02:23 25 4
gpt4 key购买 nike

我有一张像这样的 table

Fld1   Fld2  Fld3
------------
0 1234 ABC
0 1235 DEF
1 1236 GHI
2 1236 JKL
3 1236 MNO
4 1237 PQR
5 1237 STU
6 1237 VWX

请注意,两列都不是唯一的。可能有许多行的 Fld1 = 0,但对于所有其他值,Fld1 将是唯一的,并且可能有许多行的 Fld2 值相同。

我需要为 Fld2 的每个值选择一行,其中 Fld 1 中的值最高。因此,基于上述数据的结果将是

Fld1    Fld2   Fl4
------------------
0 1234 ABC
0 1235 DEF
3 1236 MNO
6 1237 VWX

最佳答案

GROUP BY 的替代方法是使用像 row_number() 这样的窗口函数。得到结果。此函数通过按 Fld2 分区数据并按 Fld1 desc 排序来创建唯一编号:

select Fld1, Fld2, Fld3
from
(
select Fld1, Fld2, Fld3,
rn = row_number() over(partition by fld2 order by fld1 desc)
from yourtable
) d
where rn = 1;

参见SQL Fiddle with Demo 。有时,当您有其他唯一的列时,使用 row_number 会更容易。这给出了结果:

| Fld1 | Fld2 | Fld3 |
|------|------|------|
| 0 | 1234 | ABC |
| 0 | 1235 | DEF |
| 3 | 1236 | MNO |
| 6 | 1237 | VWX |

关于sql - 选择没有唯一键的单行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29653890/

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