我知道这是 Select Rows with Maximum Column Value group by Another Column 的副本但我想选择具有最大列值的行,按另一列分组,但没有嵌套的选择语句,我知道可以这样做:
SELECT
T.Name,
T.Rank,
T.ID
FROM MyTable T
WHERE T.Rank = (
SELECT MAX( T1.Rank) FROM MyTable T1
WHERE T1.Name= T.Name
)
其中 ID,
秩,
Name
是表模式,我想先按 Name 对结果进行分组,然后从每个 Name 组中选择一行,具体取决于哪一个具有最高的 Rank。
附件是我要从中选择的表格示例
最佳答案
mysql> SELECT t1.nm, t1.rank,t1.id
FROM mytable t1
LEFT JOIN (
SELECT nm, max(rank) as top
FROM mytable t2
GROUP BY nm
) AS t2 ON t1.nm=t2.nm AND t1.rank = t2.top
WHERE t2.nm IS not NULL
ORDER BY nm;
+----+------+---------+
| nm | rank | id |
+----+------+---------+
| m | -1 | b7kjhsf |
| n | 13 | d3sf |
+----+------+---------+
2 rows in set (0.00 sec)
mysql> select * from mytable;
+----+------+----------+
| nm | rank | id |
+----+------+----------+
| n | 11 | asfd |
| n | 11 | bsf |
| n | 11 | zzasdfsf |
| n | 13 | d3sf |
| n | 11 | effesf |
| n | 10 | yxxgesf |
| n | 11 | bkhjusf |
| m | -1 | b7kjhsf |
| m | -4 | cdfgabsf |
+----+------+----------+
9 rows in set (0.00 sec)
关于mysql - 选择具有最大列值的行由另一列分组而没有嵌套的 select 语句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13491844/