在我的MySQL数据库中,我想在特定日期范围(2014年7月1日至2015年7月1日)中每天插入表格行。每行都有一组不同的值,但只需要设置其中两个(日期和状态),其他值应保持为NULL。
有什么办法可以实现?
谢谢!
如果要每天在此范围内插入相同的状态,则可以使用:
INSERT INTO your_table (date, status, col3, col4)
SELECT
DATE_ADD('2014-07-01', INTERVAL t.n DAY),
'your status',
NULL,
NULL
FROM (
SELECT
a.N + b.N * 10 + c.N * 100 AS n
FROM
(SELECT 0 AS N UNION ALL SELECT 1 UNION ALL SELECT 2 UNION ALL SELECT 3 UNION ALL SELECT 4 UNION ALL SELECT 5 UNION ALL SELECT 6 UNION ALL SELECT 7 UNION ALL SELECT 8 UNION ALL SELECT 9) a
,(SELECT 0 AS N UNION ALL SELECT 1 UNION ALL SELECT 2 UNION ALL SELECT 3 UNION ALL SELECT 4 UNION ALL SELECT 5 UNION ALL SELECT 6 UNION ALL SELECT 7 UNION ALL SELECT 8 UNION ALL SELECT 9) b
,(SELECT 0 AS N UNION ALL SELECT 1 UNION ALL SELECT 2 UNION ALL SELECT 3 UNION ALL SELECT 4) c
ORDER BY n
) t
WHERE
t.n <= TIMESTAMPDIFF(DAY, '2014-07-01', '2015-07-01');
Run Code Online (Sandbox Code Playgroud)
说明
子选择将创建一个临时表,该表在开始('2014-07-01')和结束('2015-07-01')之间每天都有一行。因此,MySQL只需执行一个INSERT,这比逐行插入要快得多。