在MySQL中返回每个组的最大值,但当存在平局时,可以使用以下查询语句:
SELECT group_id, MAX(value) AS max_value
FROM your_table
GROUP BY group_id
HAVING COUNT(*) = 1
UNION ALL
SELECT t1.group_id, t1.value AS max_value
FROM your_table t1
INNER JOIN (
SELECT group_id, MAX(value) AS max_value
FROM your_table
GROUP BY group_id
HAVING COUNT(*) > 1
) t2 ON t1.group_id = t2.group_id AND t1.value = t2.max_value
ORDER BY group_id;
这个查询语句首先使用GROUP BY
和MAX
函数来找到每个组的最大值,并使用HAVING COUNT(*) = 1
来排除存在平局的组。然后使用UNION ALL
将结果与存在平局的组的最大值进行合并。最后使用ORDER BY
对结果按照group_id进行排序。
这个查询语句可以返回每个组的最大值,当存在平局时,返回id较小的组的最大值。请将your_table
替换为实际的表名。
领取专属 10元无门槛券
手把手带您无忧上云