2011-06-16 14 views
7

Deseo utilizar select * para seleccionar todos los campos de una tabla, pero también quiero usar un alias en un solo campo. ¿Es posible? Si es así, ¿cuál sería la sintaxis?Seleccione * con alias específicos [sintaxis]

Ejemplo

select *, 
item1 as hats 
from factory 

no han sido capaces de hacer cualquier cosa como este trabajo, gracias!

+1

No es necesario nombrar todos los campos. La declaración de OP es válida, como también lo es 'select col1, col2 como mycol from mytable' Al menos en todas las implementaciones de SQL que conozco. – Hyperboreus

Respuesta

14

Sólo traté

select *, item1 as hats from factory 

en MySQL y Postgres y en ambas DBMS funciona muy bien. Solo tenga en cuenta que obtiene dos columnas con item1. Una columna llamada item1 y una llamada hats.

+0

¿Sería posible eliminar el duplicado? – tylercomp

+0

¿Con qué DBMS estás trabajando? (Por favor, etiquetarlo) – Hyperboreus

+0

Bueno, no sé por qué no funcionó. Estoy usando sql server 2007. Creo que de todos modos está todo bien. ¡Gracias! Duplicar realmente no importa y probablemente debería estar allí en retrospectiva de mi problema – tylercomp

2

Sí, es posible utilizar ese formato, sin embargo, no se recomienda el uso de Select *. Es mejor enumerar las columnas que desea. Algunos productos de base de datos pueden obstaculizar si la lista de columnas en combinación con su columna con alias produce un nombre de columna duplicado. Sin embargo, nuevamente, puede resolver esto al enumerar las columnas.

+0

No confío en la enumeración ... porque no lo entiendo en este contexto. ¿Tienes un ejemplo? – tylercomp

+0

@tylercomp "enumerar" = "enumerar las columnas en lugar de usar *". Es decir, sea explícito sobre las columnas que quiere y no confíe en *. – Thomas

+0

Oh, siempre imaginé que sería como listar select 1,2,3,4,5 y obtener las primeras cinco columnas ... pero no creo que pueda tomar la ruta de enumerarlas ... demasiadas para ser inmediatamente factibles ; lastima la legibilidad – tylercomp

2

Eso debería funcionar, pero tenga en cuenta que su columna item1 será duplicada!

Supongamos que su tabla tiene las columnas (id, item1, item2) y que su selección propuesta devolverá (id, item1, item2, hats).

2

También es válido en MS Sql Server, pero la columna que está alias se duplicará. Probé la consulta en el servidor Sql 2005 y funcionó.

select *,col2 as 'customcol' from table1 
Cuestiones relacionadas