如何在SQLite中更新随机行?

时间:2018-08-07 14:40:38

标签: sqlite

我有一个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

1 个答案:

答案 0 :(得分:2)

您可以同时使用SELECTUPDATE

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;

这将随机选择十分之一行。您可以调整模数以获取更多或更少的行,等等。