Dans SQL Server Compact Edition dans Visual Studio 2010 (peut-être SQL Server et SQL en général, je ne sais pas), cette commande fonctionne:
DELETE FROM foods WHERE (name IN ('chickens', 'rabbits'))
mais cette commande produit une erreur de: Error near identifier f. Expecting OUTPUT.
DELETE FROM foods f WHERE (f.name IN ('chickens', 'rabbits'))
sql
sql-server
sql-server-ce
Ricardo Altamirano
la source
la source
Réponses:
Pour aliaser la table, vous devez dire:
Je ne vois pas l'intérêt de l'alias pour cette
DELETE
déclaration spécifique , d'autant plus que (au moins IIRC) cela n'est plus conforme à ANSI strict. Mais oui, comme le suggèrent les commentaires, cela peut être nécessaire pour d'autres formulaires de requête (par exemple la corrélation).la source
SELECT
et d'autres déclarations de ce type, alors j'ai instinctivement fait ce à quoi j'étais habitué et je me demandais pourquoi cela ne fonctionnait pas correctement.in
ounot in
ne fonctionnerait pas: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
L'instruction delete a une syntaxe étrange. Ça va comme ça:
la source