首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >从表中删除行引发语法错误

从表中删除行引发语法错误
EN

Stack Overflow用户
提问于 2021-03-17 22:41:30
回答 1查看 142关注 0票数 0

我正试图为我拥有的sqlite项目编写一个pop函数,但由于某些原因,我不能删除一行。我可以获取行中的所有内容,但是当我尝试删除时,会得到一个错误。我是这样检索信息的:

代码语言:javascript
复制
elf.Cursor.execute(f"SELECT * from {table} ORDER BY ROWID LIMIT 1")

以下是我要删除的内容:

代码语言:javascript
复制
self.Cursor.execute(f"DELETE from {table} ORDER BY ROWID LIMIT 1")

“编辑我尝试将行更改为”删除“如下:

代码语言:javascript
复制
self.Cursor.execute(f"DELETE from {table} where ROWID = 1")

无论如何,我不确定我将要读的那句话是否和我要删除的一样。

当我尝试删除时,我会得到以下内容:

self.Cursor.execute(f“按ROWID限制1”从{table} ORDER中删除) sqlite3.OperationalError:近"ORDER":语法错误

据我所知,我正在遵循这里找到的示例(https://www.sqlitetutorial.net/sqlite-delete/)。有人能告诉我我做错了什么吗?

EN

回答 1

Stack Overflow用户

发布于 2021-03-17 23:06:14

从示例的链接中可以看到:

SQLite还通过添加ORDER和DELETE子句为DELETE语句提供扩展。如果使用SQLITE_ENABLE_UPDATE_DELETE_LIMIT编译时选项编译SQLITE_ENABLE_UPDATE_DELETE_LIMIT,则可以在DELETE语句中使用ORDER和DELETE子句。

因此,ORDER BY/LMIT子句在DELETE语句中不受SQLite支持,除非您使用SQLITE_ENABLE_UPDATE_DELETE_LIMIT编译时选项创建自定义版本。

但你可以这样做:

代码语言:javascript
复制
DELETE from {table} WHERE ROWID = (SELECT MIN(ROWID) FROM {table})

您尝试的查询:

代码语言:javascript
复制
DELETE from {table} where ROWID = 1

只有当表的最小ROWID1时才能工作,而这并不总是正确的。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66682286

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档