mysql - GROUP BY 返回第一条记录

标签 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.

这就是为什么我要分组到第一行。

最佳答案

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

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/

相关文章:

mysql - DESC 命令和其中的键列

mysql - 关于 vb.net 中的字符串数据类型

php - CakePHP 和 GROUP BY

mysql - SQL 按 2 列分组

php - 使用php从mysql获取唯一标签和出现次数

php - 首先获取人名,然后根据该人名检索外部数据 COUNT

Mysql需要很长时间才能达到更大的限制

sql - 按所选值将记录分组到不同的列中

python-3.x - Pandas groupby,如何对多列进行多重聚合?

MySQL GROUP BY 和 SORT BY 与 JOINS