我有一个SQLite数据库。我正在尝试更新随机行的值。
我要选择n
个随机行,
SELECT col1 FROM table ORDER BY RANDOM() LIMIT n;
但是,我无法以相同的方式来更新值。使用
UPDATE table SET col1="foo" ORDER BY RANDOM() LIMIT n;
产生错误
Error: near "ORDER": syntax error
答案 0 :(得分:2)
您可以同时使用SELECT
和UPDATE
:
UPDATE ... WHERE table.col1 IN (SELECT col1 ...);
因此,使用您的命令选择随机行,您可以使用
更新这些行UPDATE table
SET col1="foo"
WHERE table.col1
IN
(
SELECT col1
FROM table
ORDER BY RANDOM()
LIMIT n
);
一种更简洁的方法,但灵活性更低:
UPDATE table SET col1="foo" WHERE RANDOM()%10=0;
这将随机选择十分之一行。您可以调整模数以获取更多或更少的行,等等。