如何使用 `created_at` 列获取最新数据

Posted

技术标签:

【中文标题】如何使用 `created_at` 列获取最新数据【英文标题】:How to Get Newest Data with `created_at` Column 【发布时间】:2018-11-04 09:16:22 【问题描述】:

如何查询id_konsul = 4所在的数据,如果相同,如何从created_at获取最新的staflow

例子

id  id_konsul   staflow created_at

1   4   1   21/05/2018 11.03
2   4   2   22/05/2018 11.03
3   4   3   23/05/2018 11.03
4   4   4   24/05/2018 11.03
5   4   5   25/05/2018 11.03
6   4   6   26/05/2018 11.03
7   4   7   27/05/2018 11.03
8   4   6   28/05/2018 11.03
9   4   7   29/05/2018 11.03
10  4   7   30/05/2018 11.03
11  4   8   31/05/2018 11.03

比我明白了

id  id_konsul   staflow created_at
1   4   1   21/05/2018 11.03
2   4   2   22/05/2018 11.03
3   4   3   23/05/2018 11.03
4   4   4   24/05/2018 11.03
5   4   5   25/05/2018 11.03
8   4   6   28/05/2018 11.03
10  4   7   30/05/2018 11.03
11  4   8   31/05/2018 11.03

【问题讨论】:

请将您的代码放在这里。 使用mysql的ORDER BY 使用 " ORDER BY created_at, id DESC " 见meta.***.com/questions/333952/… 【参考方案1】:

试试这个查询

SELECT * FROM test1 n 
WHERE created_at=(SELECT MAX(created_at)FROM test1 
  WHERE staflow=n.staflow) 
order by id

【讨论】:

【参考方案2】:

要获取每个 staflow 属性的最新行,您可以使用自联接

select a.*
from demo a
join (
    select id_konsul,staflow, max(created_at) created_at
    from demo
    where id_konsul = 4
    group by id_konsul, staflow
) b on a.staflow = b.staflow
    and a.id_konsul = b.id_konsul 
    and a.created_at = b.created_at;

或者使用左连接

select a.*
from demo a
left join demo b on a.id_konsul = b.id_konsul
                and a.staflow = b.staflow 
                and a.created_at < b.created_at
where a.id_konsul = 4 
and b.id_konsul is null

Demo

要使用 laravel 的查询构建器编写上述查询,您可以使用以下参考

Laravel Eloquent select all rows with max created_at

Laravel - Get the last entry of each UID type

Laravel Eloquent group by most recent record

【讨论】:

【参考方案3】:

请试试这个查询。

SELECT * FROM table_name WHERE id_konsul = 4 ORDER BY created_at DESC LIMIT 1; 

【讨论】:

【参考方案4】:

您可以使用 INNER JOIN。

示例:

SELECT t0.* from TABLE_NAME AS t0 INNER JOIN TABLE_NAME t1 ON t0.staflow = t1.staflow WHERE t0.created_at > t1.created_at and t0.id_konsul = 4

【讨论】:

我想获得所有 staflow 但最新的表格 created_at

以上是关于如何使用 `created_at` 列获取最新数据的主要内容,如果未能解决你的问题,请参考以下文章

如何在 Laravel 中获取最新的活动记录?

使用laravel中的日期组从数据库中获取数据[重复]

如何在 Laravel 中更新 created_at 的列属性

Laravel 获取数组中每一天的最新数组项

如何获取单个整数/浮点列的总和达到某个值的行

将 created_at 列添加到迁移表 - Laravel