GROUP BY返回第一条记录

nta*_*tan 11 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 
Run Code Online (Sandbox Code Playgroud)

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

不要问我为什么不在JOIN中设置语言.这是要做的方法.

所以到目前为止一切正常,期待我有语言en和记录的情景fr.如果currentLangen基于

langData.lang='currentLang' THEN 1 ELSE 999 END
Run Code Online (Sandbox Code Playgroud)

en订单是1和fr秩序是和999不是获取价值的en,我得到的价值fr.

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

Qua*_*noi 11

我假设你在谈论类似的东西

SELECT  *
FROM    mytable
GROUP BY
        column
Run Code Online (Sandbox Code Playgroud)

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
        )
Run Code Online (Sandbox Code Playgroud)