【问题标题】:How to get last record from single group如何从单个组中获取最后一条记录
【发布时间】:2014-04-14 05:11:55
【问题描述】:

我有以下类型的表。我想输出特定组的最后一条记录(最近的)。请建议我的 sql 查询。

    Id Name    random number
    -------------------------
    1   A         1233
    2   A         1778
    3   A         1221
    4   B         1298
    5   B         1289
    6   C         1267

我想要A组的最后一条记录

例如

        ID  Name  Random number
       ----------------------
        3    A      1221

【问题讨论】:

    标签: mysql sql sql-server group-by sql-order-by


    【解决方案1】:
    select id, name, random from table where Name='A' order by id desc limit 1
    

    【讨论】:

    • 这不是 OP 要求。 OP 想要获取上面所有组的记录只是示例。
    • @Broken Heart ღ:“属于特定组”
    • @Broken Heart ღ:对。这正是 OP 所问的:“我想要 A 组的最后一张唱片”
    • 嘿,我很清楚我只想要 A 组的最后一条记录
    【解决方案2】:

    这里是查询:

    select * from tbl where id IN (select max(id) from tbl group by name);
    

    这里是小提琴:http://sqlfiddle.com/#!2/01d69/8

    【讨论】:

    • 这是一个矫枉过正的解决方案。 OP 明确询问了一个特定的群体。
    • @OP 要求一个特定的组,所以第一个答案是正确的 OP 不会要求每个组的最后一行,而且 zerkms 是正确的子查询会降低性能
    【解决方案3】:
    SELECT * From Table1 Where [Id] in (
    SELECT Max([Id]) as [maxId] From Table1 Where [Name] = 'A')
    

    Fiddle

    【讨论】:

    • 这不是 OP 要求。 OP想要获取上面所有组的记录只是示例。
    • @Broken Heart ღ:谁告诉你的?
    • @Broken Heart ღ:是吗?它是给定要求“我想要 A 组的最后一条记录”的输出。如果 OP 想要每个组的最后一行,他们会询问每个组的最后一行,而不是 特定 组。
    • 嘿@BrokenHeartღ我想查询只是得到A组的最后一条记录
    猜你喜欢
    • 2012-04-11
    • 2012-01-23
    • 1970-01-01
    • 2012-02-13
    • 2023-01-28
    • 2017-12-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多