gpt4 book ai didi

mysql - 如何比较 SQL 查询结果中的行值?

转载 作者:行者123 更新时间:2023-11-29 10:42:17 25 4
gpt4 key购买 nike

我得到的SQL子查询结果如下

A B C
1 2 12
1 4 10
1 3 11
2 5 9
2 3 8
4 7 8
4 9 3

现在我必须以这种方式为 A 列中的每个不同值输出值,并且对于 B 列中的最高值,我必须返回 C 列中的相应值

输出将是

A B C
1 4 10
2 5 9
4 9 3

我怎样才能做到这一点。

最佳答案

您可以使用 ANSI 标准函数row_number():

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

row_number() 函数为每一行分配一个连续值。在这种情况下,具有相同 a 值的所有行都被分配相同的值,其中“1”表示最大的 b 值。您想要第一个,因此 seqnum = 1

MySQL不支持该功能。相反,只需这样做:

select t.*
from t
where t.b = (select max(t2.b) from t t2 where t2.a = t.a);

如果您关心性能,您需要在 t(a, b) 上建立索引。

关于mysql - 如何比较 SQL 查询结果中的行值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45253678/

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