我有一个测试SQLite表:
CREATE TABLE test (
id INTEGER PRIMARY KEY NOT NULL,
x REAL NOT NULL DEFAULT (RANDOM()),
y REAL NOT NULL DEFAULT (RANDOM()),
z REAL NOT NULL DEFAULT (RANDOM())
)
Run Code Online (Sandbox Code Playgroud)
我想创建超过数千行的随机数据,我怎样才能使用SQL查询?我不能使用SQL FOR循环,因为SQLite不支持循环,我正在考虑SELECT从表中INSERT获取每行的所有数据,因此每次执行查询时行数都会加倍.我认为这需要嵌套查询,我不明白.
Joa*_*son 10
为了hacky,这将一次插入多达2048个随机行,通过设置限制来决定多少行;
INSERT INTO TEST (x,y,z)
SELECT RANDOM(), RANDOM(), RANDOM()
FROM (SELECT * FROM (
(SELECT 0 UNION ALL SELECT 1) t2,
(SELECT 0 UNION ALL SELECT 1) t4,
(SELECT 0 UNION ALL SELECT 1) t8,
(SELECT 0 UNION ALL SELECT 1) t16,
(SELECT 0 UNION ALL SELECT 1) t32,
(SELECT 0 UNION ALL SELECT 1) t64,
(SELECT 0 UNION ALL SELECT 1) t128,
(SELECT 0 UNION ALL SELECT 1) t256,
(SELECT 0 UNION ALL SELECT 1) t512,
(SELECT 0 UNION ALL SELECT 1) t1024,
(SELECT 0 UNION ALL SELECT 1) t2048
)
) LIMIT 246;
Run Code Online (Sandbox Code Playgroud)
您可以使用递归查询.
此查询生成一个包含 1000 个随机数的表:
CREATE TABLE test(field1);
INSERT INTO test
WITH RECURSIVE
cte(x) AS (
SELECT random()
UNION ALL
SELECT random()
FROM cte
LIMIT 1000
)
SELECT x FROM cte;
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
7836 次 |
| 最近记录: |