使用Select语句从SQLite中删除

时间:2014-01-22 23:12:17

标签: sql sqlite

我有以下SELECT声明,

SELECT * From MyTable as t
WHERE
t.Key1 =
(SELECT Max(r.Key1) From MyTable as r
WHERE (Key2 = t.Key2 AND Key3 = t.Key3 AND Key4 = t.Key4))
AND
(Key2 = t.Key2 AND Key3 = t.Key3 AND Key4 = t.Key4)

选择我要从MyTable删除的所有记录。但是,当我尝试实际删除记录时,即将SELECT *更改为DELETE,我收到错误,我认为这是因为您不能使用带有DELETE语句的别名。

如何从MyTable删除这些选定的记录?

1 个答案:

答案 0 :(得分:1)

确实无法在DELETE语句中为表名使用别名。

但是,该表仍有一个名称。 只要此表的所有其他实例都有别名,您就可以明确地引用它们中的任何一个:

DELETE From MyTable
WHERE
MyTable.Key1 =
(SELECT Max(r.Key1) From MyTable as r
WHERE (Key2 = MyTable.Key2 AND Key3 = MyTable.Key3 AND Key4 = MyTable.Key4))
AND
(Key2 = MyTable.Key2 AND Key3 = MyTable.Key3 AND Key4 = MyTable.Key4)

(此查询的最后一行没有意义,因为它不是子查询的一部分,Key2MyTable.Key2引用同一个表。)