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
答案 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