Why can't I use an alias in a DELETE statement?
To alias the table you'd have to say:
DELETE f FROM dbo.foods AS f WHERE f.name IN (...);
I fail to see the point of aliasing for this specific DELETE
statement, especially since (at least IIRC) this no longer conforms to strict ANSI. But yes, as comments suggest, it may be necessary for other query forms (eg correlation).
The delete statement has strange syntax. It goes like this:
DELETE f FROM foods f WHERE (f.name IN ('chickens', 'rabbits'))