2012-06-12 7 views
92

En SQL Server Compact Edition en Visual Studio 2010 (tal vez de SQL Server y SQL en general, no sé), este comando funciona:¿Por qué no puedo usar un alias en una declaración DELETE?

DELETE FROM foods WHERE (name IN ('chickens', 'rabbits')) 

pero este comando produce un error de: Error near identifier f. Expecting OUTPUT.

DELETE FROM foods f WHERE (f.name IN ('chickens', 'rabbits')) 
+0

@ aaron-bertrand Gracias por corregir mi título también. No me di cuenta del término correcto para lo que publiqué (de lo contrario, Google podría haber resuelto esto rápidamente). Gracias de nuevo. –

+0

Sin preocupaciones. Solo trato de dejarlo en claro para otros lectores. –

+0

Estoy de acuerdo con usted por la forma en que las variaciones de sintaxis entre los diferentes comandos son un poco intuitivos a veces. –

Respuesta

148

para asignar un alias a la tabla que lo tienes que decir:

DELETE f FROM dbo.foods AS f WHERE f.name IN (...); 

no veo el punto de aliasing para esta específicaDeclaración, especialmente desde (al menos IIRC) esto ya no se ajusta a ANSI estricto. Pero sí, como sugieren los comentarios, puede ser necesario para otros formularios de consulta (por ejemplo, correlación).

+0

Principalmente tenía curiosidad, porque normalmente uso alias cuando utilizo 'SELECT' y otras declaraciones similares, así que instintivamente hice lo que estoy acostumbrado y me preguntaba por qué no funcionó correctamente. –

+28

+1 En el caso del OP, es posible que no se necesite alias, pero fue útil para mí porque estaba usando una cláusula EXISTS, así que tuve que aliar la tabla para poder vincular ambas consultas. – Ricardo

+4

Estaba buscando una solución al tomar una consulta SELECT existente y convertirla en una declaración DELETE rápidamente sin tener que reescribir el aliasing. – Alex

52

La instrucción delete tiene una sintaxis extraña. Esto es así:

DELETE f FROM foods f WHERE (f.name IN ('chickens', 'rabbits')) 
+3

+1 Tan útil como el otra respuesta ... – Ricardo

+1

@Ricardo única diferencia es el esquema. Pero el tiempo sugiere que ambos se publicaron al mismo tiempo. – Mukus

Cuestiones relacionadas