MySQL查询,MAX()+ GROUP BY + WHERE

时间:2017-02-15 03:55:06

标签: mysql max where

如何获取包含每个分组集的最大值的行? 我有这个mysql

SELECT ticketId, version, storeId, `status` FROM ticket where storeId = 1 AND status = 0;

并获得结果。

enter image description here

我想在不同的ticketId中找到最大版本,行将是

ticket | version | storeId | status
---
  1    | 5       | 1       | 0  
  2    | 5       | 1       | 0

mysql将如何?

2 个答案:

答案 0 :(得分:1)

使用聚合函数max

select ticketId,
    max(version),
    storeId,
    `status`
from ticket t
where storeId = 1
    and status = 0
group by ticketId,
    storeId,
    `status`

如果ONLY_FULL_GROUP_BY被禁用,您可以使用:

select ticketId,
    max(version),
    storeId,
    `status`
from ticket t
where storeId = 1
    and status = 0
group by ticketId;

答案 1 :(得分:1)

只需使用group bymax

SELECT ticketId as ticket, MAX(version) AS version, storeId, `status`
FROM ticket 
WHERE storeId = 1
AND status = 0
GROUP BY ticketId