SQLite 更新限制
SQLite Update Limit
如何在 SQLite 的 UPDATE
中使用 LIMIT
子句?
我尝试将选项添加到 SQLConnection,但它不起作用,我收到错误 SQL logic error near LIMIT
SQLiteConnection connection = new SQLiteConnection("Data Source=" + outpath + ";Version=3;foreign keys=true;sqlite enable update delete limit=true");
string sql = @"
UPDATE MyTable
SET userId = @userId2
WHERE userId = @userId1
LIMIT @amount
";
如果无法使 LIMIT
子句起作用,我还能如何限制更新的记录数量?
您可以使用 子查询 获取可用于 userId
字段更新的记录。
假设这是您的 MyTable
内容:
id userId
1 1
2 1
3 1
4 2
5 2
如果只想将userId=1
的2条记录改成userId=3
。您可以通过 ID select 这 2 条记录:
UPDATE MyTable
SET userId=3
WHERE id IN
(select id
from users
WHERE userId=1
LIMIT 2)
子查询获取符合条件的前 2 条记录的 id
值并将它们传递给 WHERE id IN
。
前 2 条记录将受到影响,因为在子查询中没有使用 ORDER BY
。
如何在 SQLite 的 UPDATE
中使用 LIMIT
子句?
我尝试将选项添加到 SQLConnection,但它不起作用,我收到错误 SQL logic error near LIMIT
SQLiteConnection connection = new SQLiteConnection("Data Source=" + outpath + ";Version=3;foreign keys=true;sqlite enable update delete limit=true");
string sql = @"
UPDATE MyTable
SET userId = @userId2
WHERE userId = @userId1
LIMIT @amount
";
如果无法使 LIMIT
子句起作用,我还能如何限制更新的记录数量?
您可以使用 子查询 获取可用于 userId
字段更新的记录。
假设这是您的 MyTable
内容:
id userId
1 1
2 1
3 1
4 2
5 2
如果只想将userId=1
的2条记录改成userId=3
。您可以通过 ID select 这 2 条记录:
UPDATE MyTable
SET userId=3
WHERE id IN
(select id
from users
WHERE userId=1
LIMIT 2)
子查询获取符合条件的前 2 条记录的 id
值并将它们传递给 WHERE id IN
。
前 2 条记录将受到影响,因为在子查询中没有使用 ORDER BY
。