mysql - 如何在三个月的窗口中只保留一行数据并删除其他数据?
问题描述
我有一个带有属性date, name, sex, id, status
日期的表,格式为日期时间。
我想分组,并且只在三个月的name, sex, id
窗口中保留一个数据并删除其他行。
例如
2017-12-01, A, MALE, 123
2017-10-01, A, MALE, 123
2017-09-01, A, MALE, 123
2016-08-02, A, MALE, 123
2017-09-01, B, MALE, 123
2016-08-02, B, MALE, 123
在按这三个属性分组后,我只想在三个月的窗口中保留任何行
2017-09-01, A, MALE, 123 (any first three rows work)
2016-08-02, A, MALE, 123
2017-09-01, B, MALE, 123
2016-08-02, B, MALE, 123
我怎么能在 SQL 中做到这一点,这可能吗?
解决方案
也许这会有所帮助:
select name,sex,id
from table
group by name,sex,id
having datediff(mm,date,getdate())<3
如果要删除,则应更改为 datediff>3