Pab*_*ook 16 mysql sql group-by
在执行以下操作后,我正在尝试获取具有最高/最低编号的行GROUP BY:
这是我的测试数据
mysql> SELECT * FROM test;
+----+-------+------+
| id | value | name |
+----+-------+------+
| 1 | 10 | row1 |
| 2 | 12 | row2 |
| 3 | 10 | row2 |
| 4 | 5 | row2 |
+----+-------+------+
4 rows in set (0.00 sec)
Run Code Online (Sandbox Code Playgroud)
要获得最低价值,我会使用 MIN()
mysql> SELECT id, name, MIN(value) AS value FROM test GROUP BY name;
+----+------+-------+
| id | name | value |
+----+------+-------+
| 1 | row1 | 10 |
| 2 | row2 | 5 |
+----+------+-------+
2 rows in set (0.00 sec)
Run Code Online (Sandbox Code Playgroud)
现在,id row2是2,但它应该是4.
我也尝试过加入:
mysql> SELECT t1.* FROM
(SELECT id, name, MIN(value) AS value
FROM test GROUP BY name) AS t1
INNER JOIN test AS t2 ON t1.id = t2.id;
+----+------+-------+
| id | name | value |
+----+------+-------+
| 1 | row1 | 10 |
| 2 | row2 | 5 |
+----+------+-------+
2 rows in set (0.00 sec)
Run Code Online (Sandbox Code Playgroud)
如何根据最低结果获得每个结果的正确ID value?
him*_*056 31
我认为这是你想要实现的目标:
SELECT t.* FROM test t
JOIN
( SELECT Name, MIN(Value) minVal
FROM test GROUP BY Name
) t2
ON t.Value = t2.minVal AND t.Name = t2.Name;
Run Code Online (Sandbox Code Playgroud)
输出:
?????????????????????
? ID ? VALUE ? NAME ?
?????????????????????
? 1 ? 10 ? row1 ?
? 4 ? 5 ? row2 ?
?????????????????????
Run Code Online (Sandbox Code Playgroud)
在这里,我使用minVal和Name自行加入了表格.
| 归档时间: |
|
| 查看次数: |
23869 次 |
| 最近记录: |