【问题标题】:How to Get Newest Data with `created_at` Column如何使用 `created_at` 列获取最新数据
【发布时间】: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

【问题讨论】:

标签: php mysql sql laravel greatest-n-per-group


【解决方案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
        猜你喜欢
        • 2022-01-03
        • 2021-04-12
        • 2021-10-05
        • 1970-01-01
        • 1970-01-01
        • 2014-05-23
        • 1970-01-01
        • 1970-01-01
        • 2022-06-11
        相关资源
        最近更新 更多