我有一条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中执行此操作?

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

谢谢你的阅读.

推荐答案

使用recursive 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;

See the demo.

Sql相关问答推荐

如何并行SELECT和RESET?

无法找到正确的SQL查询需求

用于动态查询情况的存储过程常识模式

通过 Select 值的顺序进行排序ClickHouse

返回包含列和包含其他列的列表的自定义查询

从原始表列中经过JSON字符串化的对象数组构建视图

基于唯一值在Access查询中创建计数器

查询页面推荐

在SQL中为两个日期之间的每个日期添加行

在Power Bi中将SQL代码转换为DAX

Netezza SQL:判断两个表是否相同

如何根据创建日期查找两个表中最接近的记录?

清理 XML 数据

如何在TSQL中编写此窗口查询

使用 PL/PGSQL 函数 Select 返回多条记录

运算符不存在:integer = bigint[]

如何在一个存储过程中创建全局临时表,并在另一个存储过程中使用它

SQL 计数和过滤查询优化

sql count distinct by column 和 sum false 和 true

SQL Server Where 条件