在 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 仅适用于 SELECTstatements。如果是这样,请这样做:

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 中插入或更新

在 SQLite + BEGIN TRANSACTION 中更新更快

更新 SQLite - “WHERE”附近:语法错误(代码 1 SQLITE_ERROR):

在应用程序的新更新中从核心数据迁移到 sqlite

如何在应用程序版本更新时维护 iPhone 上 SQLite 数据库中的数据?

使用 SQLite 的 sqlite-net-pcl 库更新单行表中单个列的值的简单方法是啥?