GROUP BY返回第一条记录

时间:2010-03-02 11:24:51

标签: mysql group-by

据我所知,mysql GROUP BY组找到了最后一条记录。

GROUP BY第一条记录有解决方案吗?

我在SQL命令中设置了ORDER,我需要GROUP BY返回第一条记录,而不是最后一条记录。

修改

这是查询

SELECT 
  DISTINCT(master.masterID),
  langData.*,
  master.* 
FROM master_table as master 
INNER JOIN lang_table as langData ON 
langData.masterID=master.masterID 
GROUP BY master.masterID 
ORDER BY 
CASE 
    WHEN langData.lang='currentLang' THEN 1 ELSE 999 END , 
    master.name desc LIMIT 0,10 

上面的查询为多语言表选择masterID,并假设首先返回currentLang中的记录,并按名称排序,然后按所有其他语言排序。

不要问我为什么不在JOIN中设置语言。这是要做的事。

所以到目前为止一切正常,我希望我的语录有enfr。如果currentLangen,则基于

langData.lang='currentLang' THEN 1 ELSE 999 END

en订单为1,fr订单为999,而不是获取en的值,而是获得fr的值。

这就是我想要分组到第一行的原因。

2 个答案:

答案 0 :(得分:11)

我假设你在谈论像

这样的事情
SELECT  *
FROM    mytable
GROUP BY
        column

您不应在GROUP BY中使用未加聚合的表达式,除非它们在组内都相同。

如果要返回组中表达式值最小的记录,请使用:

SELECT  mo.*
FROM    (
        SELECT  DISTINCT column
        FROM    mytable
        ) md
JOIN    mytable mo
ON      mo.id = 
        (
        SELECT  id
        FROM    mytable mi
        WHERE   mi.column = md.column
        ORDER BY
                mi.column, mi.someorder
        LIMIT 1
        )

答案 1 :(得分:1)

LIMIT 1添加到您的查询中。

相关问题