我有一张 MySQL 5.7 表。
我需要为 9000 条记录设置连续的日期。
前 300 条记录将有 2025-01-02。
接下来的 300 条记录将是 2025-01-03。
依此类推,直到所有 9000 个都已更新,直到最后日期 2025-01-31。
有没有办法通过单个查询做到这一点?
我不想重复这个 30 次:
UPDATE table SET date = '2025-01-02' ORDER RAND() LIMIT 300;
这是我尝试过的:
SET @row_num = 0;
SET @start_date = '2025-01-02';
UPDATE `DISTRIBUTION`
JOIN (
SELECT
`email`,
@row_num := @row_num + 1 AS row_num
FROM `DISTRIBUTION`
) AS numbered_rows ON `DISTRIBUTION`.`email` =
numbered_rows.`email`
SET `DISTRIBUTION`.`date_column` = DATE_ADD(@start_date,
INTERVAL FLOOR((row_num - 1) / 300) DAY)
WHERE `LIST` = 'list1' AND `DOMAIN` = 'GM';
但尝试之后,它却将记录设置为 2040 年代和 1930 年的日期。