选择多个最大值

时间:2015-11-15 16:03:21

标签: mysql sql

我在mysql数据库上有这样的表:

id | item
-----------
1  | 2
2  | 2
3  | 4
4  | 5
5  | 8
6  | 8
7  | 8

我希望结果为具有最高项目值的3条记录

select max(item)仅返回1个值 如何选择多个最大值? 谢谢

3 个答案:

答案 0 :(得分:4)

您可以使用派生表获取最大值,并使用join将其返回到原始表,以查看与其对应的所有行。

select t.id, t.item 
from tablename t
join (select max(item) as mxitem from tablename) x
on x.mxitem = t.item

编辑:

select t.co_travelers_id, t.booking_id, t.accounts_id 
from a_co_travelers t
join (select accounts_id, max(booking_id) as mxitem 
      from a_co_travelers
      group by accounts_id) x 
on x.mxitem = t.booking_id and t.accounts_id = x.accounts_id

答案 1 :(得分:0)

如果使用不带GROUP BY的'聚合函数',则只返回一行。

您可以使用带有聚合函数的GROUP BY。

这是 SQLFiddle Demo

SELECT id,max(item) AS item 
 FROM table_name
 GROUP BY id 
 ORDER BY item DESC 
 LIMIT 3

希望这有帮助。

答案 2 :(得分:0)

There is the graphical explanation。 有脚本mysql(低抽象级别,没有内部联接或某物)

select * from ocena, uczen where ocena.ocena = (SELECT MAX(ocena.ocena) FROM ocena WHERE ocena.przedmiot_id="4" and ocena.uczen_id="1") and ocena.uczen_id=uczen.id and ocena.przedmiot_id="4" and uczen_id="1"