SQLite现在具有CTE,文档说明您可以将其与插入,更新和删除查询一起使用- 但仅提供了select语句的示例。
我可以通过insert-select找出CTE如何应用于插入。但是我们如何在没有从句的情况下在更新或删除中使用它们呢?
CTE可用于子查询中:
WITH NewNames(ID, Name) AS (...) UPDATE MyTable SET Name = (SELECT Name FROM NewNames WHERE ID = MyTable.ID); WITH IDsToDelete AS (...) DELETE FROM MyTable WHERE ID IN IDsToDelete;