【问题标题】:Delete all but last entry for each individual删除每个人除最后一个条目之外的所有条目
【发布时间】:2012-11-23 17:59:13
【问题描述】:

我的数据库包含大约每月一次的多​​个个人条目,由 ID 标识。日期存储在标题为 YEAR 和 WEEK 的字段中。我有一个二进制标志,称为 BINARY_FLAG。我想抓住二进制标志打开的特定年份中每个人的最后一周。

我拉取初始数据的代码如下:

select ID, year, week, binary_flag
from my_table
where year = 2000 and
binary_flag = 1

这将返回 2000 年二进制标志为 1 的所有条目。但是,如果二进制标志连续数周为 1,许多个人将有多个条目。如何删除除上周以外的所有内容?

【问题讨论】:

    标签: mysql sql sybase


    【解决方案1】:
    select * from my_table t1
    join 
    (select ID, year, max(week) maxWeek
    from my_table
    where year = 2000 and
    binary_flag = 1
    group by Id,year) t2
    on
    (t1.Id=t2.id) and (t1.year=t2.year) and (t1.week=t2.maxWeek)
    

    【讨论】:

      猜你喜欢
      • 2014-05-15
      • 2022-07-26
      • 2011-04-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多