在 Sqlite 中更新顶部
Posted
技术标签:
【中文标题】在 Sqlite 中更新顶部【英文标题】:UPDATE TOP in Sqlite 【发布时间】:2012-04-21 22:01:03 【问题描述】:是否可以使用 WHERE 子句更新第一行。 我试过了:
UPDATE TOP (1) Players SET... WHERE...
和:
UPDATE TOP 1 Players SET... WHERE
但是sqlite中似乎没有TOP。 我可以使用一些替代品吗? 还是我做错了什么?
【问题讨论】:
【参考方案1】:试试
UPDATE Players SET... WHERE... LIMIT 1
我现在无法验证,但也许 LIMIT
仅适用于 SELECT
statements。如果是这样,请这样做:
UPDATE Players SET... WHERE ID in (SELECT ID FROM Players WHERE ... LIMIT 1)
【讨论】:
依靠LIMIT
更新/删除查询可能会产生一些难以重现的错误。我听说人们使用LIMIT
来增强性能,但我认为这不值得。
@juergend 抱歉,但它起作用了,然后,在第二次尝试中,它停止了,现在 UPDATE 正在影响一切。 UPDATE Players SET team='" + All[q] + "', salary='$"+salary+"' WHERE team in (SELECT team FROM Players WHERE team='none' LIMIT 1)
我的查询。
您的 Players 表是否有唯一的 ID 列?如果是这样,请尝试UPDATE Players SET team='" + All[q] + "', salary='$"+salary+"' WHERE id in (SELECT id FROM Players WHERE team='none' LIMIT 1)
是的,抱歉,我会试试的。
工作完美,你救了我的命【参考方案2】:
SQLite 确实支持 TOP N 查询,但它使用the LIMIT clause 来完成此操作。在任何情况下,这仅适用于 SELECT 语句,而不适用于 UPDATE。如果只想更新一行,则需要使用 WHERE 子句过滤 UPDATE。
编辑:
我的立场是正确的,它显示为the UPDATE statement does support the LIMIT clause。
【讨论】:
以上是关于在 Sqlite 中更新顶部的主要内容,如果未能解决你的问题,请参考以下文章
在 SQLite + BEGIN TRANSACTION 中更新更快
更新 SQLite - “WHERE”附近:语法错误(代码 1 SQLITE_ERROR):