【问题标题】:How to find all newest record for one type? [duplicate]如何找到一种类型的所有最新记录? [复制]
【发布时间】:2018-08-13 08:15:47
【问题描述】:

我有一张这样的桌子:

id type value date
1  A    10    2018-08-01
2  A    20    2018-08-02
3  A    30    2018-08-04
4  B    11    2018-08-01
5  B    12    2018-08-02
6  C    11    2018-08-01

我想获得一种类型的最新记录:

id type value date
3  A    30    2018-08-04
5  B    12    2018-08-02
6  C    11    2018-08-01

这个sql怎么写?

【问题讨论】:

  • 您应该尝试自己编写代码。在doing more research 之后,如果您有问题发布您尝试过的方法,并清楚地解释什么不起作用,并提供a Minimal, Complete, and Verifiable example。阅读How to Ask a good question。请务必take the tour 并阅读this
  • 您可以使用上面的查询作为子查询来获取每种类型的最大日期并按日期加入表格。
  • @gacopu 接受的答案不满足简报。所以要么接受的答案是错误的,要么是问题是错误的。为了演示,交换类型 B 的“值”

标签: mysql sql mariadb


【解决方案1】:

如果您与date 有联系,那么您可以将limit 子句与subquery 一起使用:

select t.*
from table t
where id = (select t1.id
            from table t1
            where t1.type = t.type
            order by t1.date desc
            limit 1
           );

【讨论】:

    【解决方案2】:

    使用max()函数和子查询

    select t.* from tableA t inner join
    
       ( select type ,max(value) as value, max(date) as d_date from tableA
    
        group by type ) as t1 on t.date =t1.d_date and t.type=t1.type
    

    【讨论】:

    • 你好downvoter 我可以知道downvote的原因吗??
    • 查看您之前被否决的答案。
    • @Strawberry 先生在他们中说这不是我的错,而是操作的错
    • 参见手册,它为这种查询提供了几种正确的模式。
    猜你喜欢
    • 2012-05-24
    • 1970-01-01
    • 2012-12-15
    • 2015-04-08
    • 2012-01-29
    • 1970-01-01
    • 2016-12-13
    • 2021-08-18
    • 2021-06-13
    相关资源
    最近更新 更多