加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

php – Laravel 4 Query Builder – groupBy Max Date

发布时间:2020-12-14 19:36:10 所属栏目:大数据 来源:网络整理
导读:小问题, 我有桌子: id | user_id | paper_update------------------------------1 | 1 | 30-5-20112 | 2 | 30-5-20123 | 3 | 30-5-2012 4 | 1 | 30-5-2013 5 | 2 | 30-5-2013 6 | 3 | 30-5-2014 7 | 4 | 30-5-2014 8 | 5 | 30-5-20149 | 5 | 30-5-2015 10 |
小问题,
我有桌子:

id    | user_id | paper_update
------------------------------
1     |    1    | 30-5-2011
2     |    2    | 30-5-2012
3     |    3    | 30-5-2012   
4     |    1    | 30-5-2013  
5     |    2    | 30-5-2013  
6     |    3    | 30-5-2014  
7     |    4    | 30-5-2014  
8     |    5    | 30-5-2014
9     |    5    | 30-5-2015 
10    |    5    | 30-5-2016
11    |    1    | 30-5-2010
-------------------------------

我想要做的是只选择具有相同user_id的记录之间paper_update最大的记录,实际上我想按user_id分组以达到最大paper_update.
所以对于这个表,它将返回:

id    | user_id | paper_update
------------------------------
4     |    1    | 30-5-2013  
5     |    2    | 30-5-2013  
6     |    3    | 30-5-2014  
7     |    4    | 30-5-2014  
10    |    5    | 30-5-2016 
-------------------------------

解决方法

这是在laravel中获得groupBy Max Date的最简单,最短的方法.使用user_id获取具有最大日期的行.

$rows = DB::table('papers')
               ->select(DB::raw('id,max(paper_update) as year,user_id'))
               ->groupBy('user_id')
               //->orderBy('paper_update','desc')
               ->get();

这个laravel查询将创建一个这样的mysql查询

select id,max(paper_update) as year from `papers` group by `user_id`;

输出将是

Array
(
    [0] => stdClass Object
        (
            [id] => 4
            [year] => 30-5-2013 
            [user_id] => 1
        )

    [1] => stdClass Object
        (
            [id] => 5
            [year] => 30-5-2013
            [user_id] => 2
        )

    [2] => stdClass Object
        (
            [id] => 6
            [year] => 30-5-2014
            [user_id] => 3
        )

    [3] => stdClass Object
        (
            [id] => 7
            [year] => 30-5-2014
            [user_id] => 4
        )
    [4] => stdClass Object
        (
            [id] => 10
            [year] => 30-5-2016
            [user_id] => 5
        )
)

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读