【问题标题】:Get the last record of each user by eventid通过eventid获取每个用户的最后一条记录
【发布时间】:2019-05-15 05:23:33
【问题描述】:

来自以下数据库,

   id      userid        eventid      created_at
    1         1            100      2010-01-01
    2         1            101      2010-02-01
    3         1            100      2010-03-01
    4         1            101      2010-04-01
    5         2            100      2010-05-01
    6         2            100      2010-06-01

我正在尝试根据 eventid 获取每个用户的最新活动,输出如下:

6         2            100      2010-06-01
4         1            101      2010-04-01
3         1            100      2010-03-01

【问题讨论】:

  • orderBy('eventid','desc') ?

标签: mysql sql laravel


【解决方案1】:

使用group byaggregation

select userid,envid,max(id) as id, max(created_at) as created_at
from tablename a
group by userid,envid

【讨论】:

  • 太棒了!现在我只需要将其转换为 laravel db 查询!
  • 这假设 ids 和 created_at 一起增加。 OP 没有说明是这种情况。
【解决方案2】:

使用行号

SELECT *
FROM (SELECT ROW_NUMBER() OVER (PARTITION BY userid, eventid ORDER BY id DESC) as RId,
             t.*
      FROM Tablename t
     ) T
WHERE RId = 1 ;

【讨论】:

    猜你喜欢
    • 2022-10-14
    • 2020-10-01
    • 1970-01-01
    • 2011-12-17
    • 2017-02-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-04-09
    相关资源
    最近更新 更多