gpt4 book ai didi

mySQL 更新接下来的 12 个 NULL 值,日期递增 1

转载 作者:行者123 更新时间:2023-11-29 11:34:03 25 4
gpt4 key购买 nike

基本上,我有以下两个疑问:

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;

感谢您的帮助。

最佳答案

http://sqlfiddle.com/#!9/7a554/1

SET @i:=0;
SET @j:=0;

UPDATE t1

RIGHT JOIN (
SELECT
id
,IF(@j = 0 ,@j:=1, @j:=@j+1)
,IF((@j-1) % 12 = 0, @i:= @i+1, @i) as i
FROM t1
WHERE hDate IS NULL
) idx
on idx.id = t1.id
SET t1.hDate = CURDATE() + INTERVAL (idx.i) DAY

关于mySQL 更新接下来的 12 个 NULL 值,日期递增 1,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36918156/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com