SQLite:在一个语句中组合SELECT和DELETE

leo*_*eon 7 sql sqlite

我需要像这样运行两个语句:

Select amount from db where ID=5
DELETE from db where ID=5

目前,我准备并运行两个不同的陈述.我想知道是否有办法将其合并为一个陈述.

基本上我需要做的就是在删除之前从行中获取一个数量列.

Ale*_*lli 12

SQLite不支持对标准SQL的这种扩展 - 你必须使用两个语句,SELECT first,DELETE next.当然,您可以将它们包装在事务中(BEGIN和COMMIT语句之前和之后将保证),以保证原子性和一致性.


ger*_*ico 10

如果您只想选择行并一次性删除它们,则可以在删除语句中使用returning子句。

例如:

delete from myTable returning *
Run Code Online (Sandbox Code Playgroud)

删除语句具有所有可能的选择功能例如withwhere允许使用任何逻辑选择行。

  • 这个问题可能很老了,但这是 2022 年最好的答案。该功能于 2021 年添加到 SQLite 中。 (3认同)