我有以下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
呢?
确实不可能在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)
(此查询的最后一行没有意义,因为它不是子查询的一部分,Key2
并且MyTable.Key2
引用同一张表。)
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句