Почему я не могу использовать псевдоним в инструкции DELETE? - программирование
Подтвердить что ты не робот

Почему я не могу использовать псевдоним в инструкции 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'))
4b9b3361

Ответ 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'))