【问题标题】:Select data with latest date for each id为每个 ID 选择具有最新日期的数据
【发布时间】:2019-12-07 23:33:14
【问题描述】:

我目前正在开发 Microsoft Access,我正在努力做我想做的事。 我有这张桌子 A:

Table A

id    title  name   date
123   azer   dfgd   1
123   afg    qsd    5
123   arr    poi    7
123   aur    qhg    3
456   aoe    aer    3
456   iuy    zer    4

我想获取每个 id 具有最新日期(最大数字)的列 id、title 和 name

在这个例子中,查询会给出

id  title name date
123  arr  poi   7
456  iuy  zer   4

我希望你能帮助我。

提前致谢!

【问题讨论】:

    标签: sql ms-access select group-by


    【解决方案1】:

    我会推荐一个相关的子查询:

    select a.*
    from a
    where a.date = (select max(a2.date) from a as a2 where a2.id = a.id);
    

    为了提高性能,您需要在a(id, date) 上建立索引。

    【讨论】:

    • 非常感谢,它给出了很好的结果。但是我还有一个问题,我在一个有 300K 行的表上使用这个查询,我需要将结果导出到一个表或一个 Excel 文件中。但是,当我尝试这样做时,由于桌子太大,计算机非常困难。你有什么建议吗?
    【解决方案2】:

    不存在:

    select t.*
    from tablename t
    where not exists (
      select 1 from tablename
      where id = t.id and date > t.date
    ) 
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多