【发布时间】:2016-04-28 14:48:12
【问题描述】:
基本上,我有这两个查询:
SELECT * FROM table
WHERE langue = 'fr' AND hDate IS NULL
LIMIT 12;
UPDATE table
SET hDate = CURDATE() + INTERVAL 1 DAY
WHERE hDate IS NULL
LIMIT 12;
这些适用于前 12 条 NULL 记录。如果我需要更新接下来的 12 条 NULL 记录,我必须手动将 UPDATE 查询更改为 INTERVAL 2 DAY
问题是我有 4000 条记录。
我试过了
UPDATE table t1 JOIN
(
SELECT id, @n := @n + 1 rnum
FROM table CROSS JOIN (SELECT @n := 0) i
WHERE langue = 'fr'
ORDER BY id
) t2 ON t1.id = t2.id CROSS JOIN
(
SELECT MAX(hDate) sdate FROM table
) q
SET t1.hDate = q.sdate + INTERVAL t2.rnum DAY
来自这个答案:MySQL query to update records with incremented date
但这会将每条记录增加 1 天。我必须增加 12 条具有相同日期的记录,接下来 12 条带有日期 + 1 的记录,接下来 12 条带有日期 + 2 的记录等。
表定义
CREATE TABLE `table` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`texte` mediumtext,
`langue` varchar(9) DEFAULT NULL,
`hDate` date DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=6726 DEFAULT CHARSET=utf8;
感谢您的帮助。
【问题讨论】:
-
所有 hDate 一开始都是 NULL。我必须增加相同日期(今天)的前 12 条记录,今天 + 1 的下 12 条记录,今天 + 2 的下 12 条记录等,直到 4000 条记录结束。
标签: mysql sql date auto-increment