据我所知,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中设置语言。这是要完成的方法。
所以到目前为止一切正常,期望我有语言 en
和 fr
的记录。如果 currentLang
是 en
那么基于
langData.lang='currentLang' THEN 1 ELSE 999 END
en
顺序是 1,fr
顺序是 999 而不是获取 en
的值,而是获取 的值fr
.
这就是为什么我要分组到第一行。
最佳答案
我假设你在谈论类似的东西
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
)
关于mysql - GROUP BY 返回第一条记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2362720/