首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >基于在幼年使用groupBy的最大日期的结果

问基于在幼年使用groupBy的最大日期的结果
EN

Stack Overflow用户
提问于 2021-03-26 13:22:14
回答 2查看 51关注 0票数 0

在这里,我希望根据字段中的最大日期来获取结果,因此,为了获得结果,我编写了如下查询

代码语言:javascript
复制
$latest_reports = Filelist::
                      select('report_type_id',DB::raw('filename,max(data_date) as latest_date'))
                     ->where('access_id','=',$retailer_supplier_id->id)
                     ->groupBy('report_type_id')
                     ->orderBy('data_date','desc') 
                     ->get();

这是我的桌子,请看一下

代码语言:javascript
复制
id    access_id   filename      report_type_id    data_date

1       16        filename1            6         2021-02-01

2       16        filename2            6         2021-01-01

3       16        filename3            6         2021-03-01

4       16        filename4            6         2021-04-01

我得到的结果是这样的

代码语言:javascript
复制
id    access_id   filename      report_type_id    data_date

4       16        filename1            6         2021-04-01

我想要得到这样的结果

代码语言:javascript
复制
id    access_id   filename      report_type_id    data_date

4       16        filename4            6         2021-04-01

这里的第一行filename值是getting..how,用来解决这个问题

EN

回答 2

Stack Overflow用户

发布于 2021-03-26 13:36:16

更新:

代码语言:javascript
复制
$latest_reports = Filelist::select([
            'report_type_id',
            'access_id'
            DB::raw('MAX(data_date) AS data_date'),
            // here can be listed the other fields
        ])
            ->where('access_id', $retailer_supplier_id->id)
            ->groupBy('report_type_id')
            ->get();

首字母:

我有类似的工作查询,就在那里我有"created_at“时间戳字段。不管怎样,我想这对你来说是可行的:

代码语言:javascript
复制
// assuming, that your table name is "filelist"
$latest_reports = Filelist::select(DB::raw('t.*'))
            ->from(DB::raw('(SELECT * FROM filelist ORDER BY data_date DESC) t'))
            ->groupBy('t.report_type_id')
            ->get();
票数 0
EN

Stack Overflow用户

发布于 2021-03-26 13:43:32

我认为这是一个MySQL问题。您只指定了一列作为分组依据,但在选择列表中指定了多列,因此不能保证在其他非聚合列中显示的内容是合理的。请参考MySQL Handling of GROUP BY

在SQL中,我可能会这样重写查询:

代码语言:javascript
复制
select * from mytable 
where data_date = (select max(data_date) from mytable)

或

代码语言:javascript
复制
select * from mytable 
order by data_date
limit 1

取决于我的特殊需求(我不知道哪一个对你更好)

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66811437

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档