代码之家  ›  专栏  ›  技术社区  ›  Jack B Nimble

Group By选择字段的第一个出现项如何获取最后一个?

  •  4
  • Jack B Nimble  · 技术社区  · 16 年前
    SELECT user_id, created FROM photo_comments GROUP BY user_id
    

    收益率

      user_id  created  
      1        2009-10-20 21:08:22 
      12       2009-10-20 21:45:00 
      16       2009-10-28 20:35:30 
    

    但是用户ID 1的创建日期是2009-10-20,这是用户ID 1的第一个条目。

    如何按用户ID 1获取最后一个条目?(日期应为2009-11-02)

    我正在尝试按每个用户最近的第一个顺序获取最后一个条目。

    3 回复  |  直到 15 年前
        1
  •  6
  •   Ken Bloom    16 年前

    一般的SQL一开始不应该允许这种查询。理论上,您只能请求在 GROUP BY 子句或其他字段的聚合函数。下面是如何构建修改后的查询。(然后您也可以在第一行添加其他字段。)

    SELECT user_id, created
    FROM photo_comments o
    WHERE created =
        (SELECT MAX(created) 
        FROM photo_comments i
        WHERE o.user_id=i.user_id)
    
        2
  •  7
  •   Anthony Conyers    16 年前

    这将起作用:

    SELECT user_id, max(created) FROM photo_comments GROUP BY user_id
    
        3
  •  0
  •   markj9    16 年前

    是否选择“用户标识”,由“照片注释”创建,按“创建的描述”创建,按“用户标识”创建

    不工作?