我正试图为我拥有的sqlite项目编写一个pop函数,但由于某些原因,我不能删除一行。我可以获取行中的所有内容,但是当我尝试删除时,会得到一个错误。我是这样检索信息的:
elf.Cursor.execute(f"SELECT * from {table} ORDER BY ROWID LIMIT 1")以下是我要删除的内容:
self.Cursor.execute(f"DELETE from {table} ORDER BY ROWID LIMIT 1")“编辑我尝试将行更改为”删除“如下:
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/)。有人能告诉我我做错了什么吗?
发布于 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编译时选项创建自定义版本。
但你可以这样做:
DELETE from {table} WHERE ROWID = (SELECT MIN(ROWID) FROM {table})您尝试的查询:
DELETE from {table} where ROWID = 1只有当表的最小ROWID为1时才能工作,而这并不总是正确的。
https://stackoverflow.com/questions/66682286
复制相似问题