gpt4 book ai didi

sql - 如何在不使用子查询的情况下仅选择具有最大序列的行?

转载 作者:行者123 更新时间:2023-12-02 10:19:52 26 4
gpt4 key购买 nike

我尝试仅选择每个 ID 具有最高 seq 的行

ID  |  Seq   |  Age
-------------------
A 1 20
A 2 30
B 1 25
B 2 32
B 3 44
B 4 48
C 1 11

这似乎有效

SELECT ID, Age
FROM Persons a
WHERE Seq = (SELECT MAX(Seq) FROM Persons b WHERE a.ID = b.ID)

但这是最好的方法、唯一的方法吗?如果没有必要,我不喜欢使用子查询,我记得你可以使用某些东西,但我忘了它是什么。有什么想法吗?

最佳答案

假设 SQL-Server (>= 2005) 或 Oracle (10g?):

WITH CTE AS
(
SELECT
ROW_NUMBER() OVER (PARTITION BY ID ORDER BY Seq DESC) AS RN
, ID, Age
FROM
Persons
)
SELECT ID, Age
FROM CTE
WHERE RN = 1

ROW_NUMBER返回结果集分区内行的序号。

编辑:也可在 Oracle 中使用,如下所示:http://sqlfiddle.com/#!4/b7e79/2/0

关于sql - 如何在不使用子查询的情况下仅选择具有最大序列的行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13153819/

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