代码之家  ›  专栏  ›  技术社区  ›  ntan

分组方式返回第一条记录

  •  11
  • ntan  · 技术社区  · 16 年前

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

    有没有办法按第一条记录分组?

    我已经在SQL命令中设置了顺序,我需要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 按名字排序,然后按所有其他语言排序。

    en fr . 如果

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

    这个 EN fr 订单号为999,而不是获取 EN 我得到了 fr

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

    2 回复  |  直到 9 年前
        1
  •  11
  •   Quassnoi    16 年前

    我想你说的是

    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
            )
    
        2
  •  1
  •   Daniel A. White    16 年前

    添加 LIMIT 1 请回答您的问题。