我需要选择最大日期,直到每月第一个丢失的日期
我的table看起来像这样
ClientID DATE
1 2018-01-01
1 2018-02-01
1 2018-03-01
1 2018-04-01
1 2018-05-01
1 2018-07-01
1 2018-08-01
1 2018-09-01
1 2018-10-01
1 2018-11-01
1 2018-12-01
2 2018-01-01
2 2018-02-01
2 2018-03-01
2 2018-04-01
2 2018-05-01
2 2018-06-01
2 2018-07-01
2 2018-08-01
2 2018-09-01
2 2018-11-01
2 2018-12-01
下面是最好的选择方法
ClientID DATE
1 2018-05-01
2 2018-09-01
我在做这个
update temporaryTable a
(SELECT max(date), clientID FROM table WHERE DATE_FORMAT(date, '%Y%m') = DATE_FORMAT(NOW(), '%Y%m') group by clientID) b on a.clientID = b.clientID
set a.date = b.date;
update temporaryTable a
(SELECT max(date), clientID FROM table WHERE DATE_FORMAT(date, '%Y%m') = DATE_FORMAT(DATE_ADD(NOW(), INTERVAL 1 month), '%Y%m') group by clientID) b on a.clientID = b.clientID
set a.date = b.date
where a.date = DATE_FORMAT(NOW(), '%Y%m');
update temporaryTable a
(SELECT max(date), clientID FROM table WHERE DATE_FORMAT(date, '%Y%m') = DATE_FORMAT(DATE_ADD(NOW(), INTERVAL 2 month), '%Y%m') group by clientID) b on a.clientID = b.clientID
set a.date = b.date
where a.date = DATE_FORMAT(DATE_ADD(NOW(), INTERVAL 1 month), '%Y%m);
等…直到间隔24个月
我不喜欢它和它的缓慢,因为表有3百万记录
1条答案
按热度按时间eimct9ow1#
我可以通过将月份和日期分开列来修复它
然后我用了这个
这使得使用正确的索引速度更快