MySQL 查询,MAX() + GROUP BY + WHERE
MySQL query, MAX() + GROUP BY + WHERE
如何获取包含每个分组集的最大值的行?
我有这个mysql
SELECT ticketId, version, storeId, `status` FROM ticket where storeId = 1 AND status = 0;
并得到结果。
而且我想在不同的 ticketId 中找到最大版本,行将是
ticket | version | storeId | status
---
1 | 5 | 1 | 0
2 | 5 | 1 | 0
mysql 会怎样?
使用聚合函数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;
只需使用 group by
和 max
:
SELECT ticketId as ticket, MAX(version) AS version, storeId, `status`
FROM ticket
WHERE storeId = 1
AND status = 0
GROUP BY ticketId
如何获取包含每个分组集的最大值的行? 我有这个mysql
SELECT ticketId, version, storeId, `status` FROM ticket where storeId = 1 AND status = 0;
并得到结果。
而且我想在不同的 ticketId 中找到最大版本,行将是
ticket | version | storeId | status
---
1 | 5 | 1 | 0
2 | 5 | 1 | 0
mysql 会怎样?
使用聚合函数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;
只需使用 group by
和 max
:
SELECT ticketId as ticket, MAX(version) AS version, storeId, `status`
FROM ticket
WHERE storeId = 1
AND status = 0
GROUP BY ticketId