MySQL查询按分组顺序排序

时间:2016-10-11 07:00:10

标签: mysql

name    order_id
tom |       1    |
tom |       0    |
tom |       2    |
tom |       3    |
tom |       4    | 
ken |       2    | 
ken |       1    | 
ken |       0    | 

我有一个如上所示的表,如何通过订单ID按名称和顺序选择数据组。我已经尝试过以下查询,但这不是我想要的结果。

SELECT * FROM tbl_dummy GROUP BY name ORDER BY order_id ASC

3 个答案:

答案 0 :(得分:1)

这个可能是你想要的:

SELECT name, MIN(order_id) AS order_id
FROM tbl_dummy
GROUP BY name
ORDER BY order_id

答案 1 :(得分:0)

对于使用GROUP BY子句,必须在所选的所有其他列上使用某种类型的聚合函数(SUM, MIN, MAX ..)。 尝试以这种方式理解,如果你在上面的数据中按名称分组,那么你将在结果中有两行,一行用于tom,一行用于ken。但是order_id应该针对每个名称显示什么值?它不能显示用逗号分隔的所有值(或其他类似的值)。要显示的值必须是使用与该名称对应的所有值计算的值。它可以是所有值的总和,平均值,最小值或最大值。

参考:http://dev.mysql.com/doc/refman/5.7/en/group-by-functions.html

您可能正在寻找的是先按名称排序结果,然后按顺序排序order_id。在这种情况下,您可以使用按多列排序

SELECT name, order_id from yourtable order by name, order_id;

答案 2 :(得分:0)

SELECT * FROM tbl_dummy GROUP by name,order_id order by name,order_id