【发布时间】:2021-04-28 18:19:49
【问题描述】:
我在MySQL 5.7 数据库中有一个名为my_values 的表:
| value1 | value2 | value3 |
|---|---|---|
| foo | 7 | something4 |
| foo | 5 | something1 |
| foo | 12 | anything5 |
| bar | 3 | something7 |
| bar | 18 | anything5 |
| bar | 0 | anything8 |
| baz | 99 | anything9 |
| baz | 100 | something0 |
如您所见,value1 中有重复项。我只想SELECT 每个唯一的value1 一次,但在value2 中具有最高值的那一行。
我正在使用这个查询:
SELECT v.* FROM my_values v WHERE v.value2 = (SELECT MAX(v2.value2) FROM my_values v2 WHERE v2.value1 = v.value1);
结果是:
| value1 | value2 | value3 |
|---|---|---|
| foo | 12 | anything5 |
| bar | 18 | anything5 |
| baz | 100 | something0 |
从这个结果中,我只想SELECT 每个唯一的value3 一次,但在value2 中具有最高值的那一行(不管value1 是什么)。
所以预期的结果是:
| value1 | value2 | value3 |
|---|---|---|
| bar | 18 | anything5 |
| baz | 100 | something0 |
我该怎么做?
【问题讨论】: