Почему я не могу использовать псевдоним в инструкции DELETE?
В SQL Server Compact Edition в Visual Studio 2010 (возможно, SQL Server и SQL вообще, я не знаю), эта команда работает:
DELETE FROM foods WHERE (name IN ('chickens', 'rabbits'))
но эта команда вызывает ошибку: Error near identifier f. Expecting OUTPUT.
DELETE FROM foods f WHERE (f.name IN ('chickens', 'rabbits'))
Ответы
Ответ 1
Для псевдонима таблицы, которую вы должны сказать:
DELETE f FROM dbo.foods AS f WHERE f.name IN (...);
Я не вижу точки сглаживания для этого конкретного оператора DELETE
, тем более, что (по крайней мере, IIRC) это больше не соответствует строгому ANSI. Но да, как следует из комментариев, это может потребоваться для других форм запроса (например, корреляции).
Ответ 2
Оператор delete имеет странный синтаксис. Это происходит следующим образом:
DELETE f FROM foods f WHERE (f.name IN ('chickens', 'rabbits'))