В 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'))
sql
sql-server
sql-server-ce
Рикардо Альтамирано
источник
источник
Ответы:
Для псевдонима таблицы вы должны сказать:
Я не вижу смысла в псевдонимах для этого конкретного
DELETE
утверждения, тем более что (по крайней мере, IIRC) это больше не соответствует строгому стандарту ANSI. Но да, как показывают комментарии, это может быть необходимо для других форм запросов (например, корреляция).источник
SELECT
и других подобных утверждений, поэтому я инстинктивно делал то, к чему привык, и удивлялся, почему это не работает должным образом.in
илиnot in
не будет работать:DELETE f from dbo.foods as f where not exists (select top 1 1 from animalDiets a where a.AnimalId = f.AnimalId and a.DietId = f.DietId)
delete o from Order as o inner join Customer as c on c.CustomerID = o.CustomerID where c.ArchiveOrders = 1
Оператор удаления имеет странный синтаксис. Это выглядит так:
источник