gpt4 book ai didi

mysql - 从 MySQL 数据库中获取按字段分组的最高值的行

转载 作者:行者123 更新时间:2023-11-29 02:01:27 25 4
gpt4 key购买 nike

我有下表

+----+----------+-----+
| id | priority | sub |
+----+----------+-----+
| 1 | 1 | A |
| 2 | 3 | A |
| 3 | 4 | A |
| 4 | 2 | B |
| 5 | 9 | B |
+----+----------+-----+

我正在尝试为每个子项获取具有最高优先级的行。所以这个结果:

+----+----------+-----+
| id | priority | sub |
+----+----------+-----+
| 3 | 4 | A |
| 5 | 9 | B |
+----+----------+-----+

我试过分组,但结果不可预知。我的猜测是嵌套查询,首先开始查找最高优先级,如下所示:

select max(priority),sub from t group by sub

这给了我

+----------+-----+
| priority | sub |
+----------+-----+
| 4 | A |
| 9 | B |
+----------+-----+

但我还需要 ID,添加到查询中显然会给我错误的 ID,将此结果与同一个表上的查询结合起来会给我一个错误 (ER_NONUNIQ_TABLE(1066)),这是有道理的......任何人能把我推向正确的方向吗?

最佳答案

子查询背后的思想是它分别为每个SUB 获取PRIORITY 的最大值。然后将其结果连接回原始表。

SELECT  a.*
FROM tableName a
INNER JOIN
(
SELECT sub, max(priority) maxVal
FROM tableName
GROUP BY sub
) b ON a.sub = b.sub AND
a.priority = b.maxVal

关于mysql - 从 MySQL 数据库中获取按字段分组的最高值的行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13923472/

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