据我所知,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
.如果currentLang
是en
基于
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)