如何重复插入语句n次递增一个值?

How to repeat insert statement n times incrementing a value?

提问人:1966bc 提问时间:10/15/2023 最后编辑:forpas1966bc 更新时间:10/16/2023 访问量:54

问:

我有这个SQL语句:

INSERT INTO `results` (batch_id, workstation_id, result, received, log_time) 
VALUES (281, 13, ABS(RANDOM()) % (232.91 - 69.87) + 69.87,
        DATETIME('now', '+1 day', 'localtime') ,
        DATETIME('now', 'localtime'));

我想通过递增天数来执行此语句 n 次,例如 30 次。

是否可以直接在 SQL 中执行此操作?

即使不增加天数,也可以做到这一点吗?

感谢您的阅读。

sql sqlite 日期时间 sql-insert common-table-expression

评论


答:

1赞 forpas 10/15/2023 #1

使用递归 CTE,您可以获得一个包含 30 行的结果集,您可以在 INSERT 语句中使用该结果集:

WITH cte(n) AS (SELECT 1 UNION ALL SELECT n + 1 FROM cte WHERE n < 30)
INSERT INTO `results` (batch_id, workstation_id, result, received, log_time) 
SELECT 281, 
       13, 
       ABS(RANDOM()) % (232.91 - 69.87) + 69.87,
       DATETIME('now', n || ' day', 'localtime'),
       DATETIME('now', 'localtime')
FROM cte;

观看演示

评论

0赞 1966bc 10/16/2023
非常感谢,你的回答给我留下了深刻的印象,恭喜你的知识....;)