如何在MySQL GROUP BY子句中订购或选择行?

时间:2010-10-15 01:51:11

标签: mysql group-by sql-order-by

我有一张这样的表:

id       number    otherfields
-------------------------------------------
664      48       aaa
665      49       bbb
666      55       ccc
667      48       ddd

number字段下的我的查询分组,我希望它选择第一个(最低)id,以便数据像ccc,aaa,bbb一样出现(按{{排序}时1}})。但是我得到了number - 换句话说,它正在选择#667行,而不是数字48的#664。

奇怪的是,这只发生在实时服务器上;在localhost上我得到了正确的方法,即使表完全相同(从localhost导出,导入到服务器上)。

是否可以确保ccc,ddd,bbb子句选择第一个ID?

2 个答案:

答案 0 :(得分:4)

不,在MySQL中是不可能的。你必须使用连接。

SELECT id, number, otherfields FROM table 
  WHERE id in (SELECT min(id) FROM table GROUP BY number)

答案 1 :(得分:0)

SQL-92版本。

SELECT 
     id, number, otherfields 
FROM 
     table t
     join (SELECT min(id) as id, number FROM table GROUP BY number) sq --subquery
       on t.id = sq.id