2009-01-18 220 views
48

Si selecciono un AS b yb no es una columna en la tabla, ¿crearía la columna "virtual"?¿Cómo crear una columna virtual usando MySQL SELECT?

de hecho, necesito incorporar una columna virtual en la consulta y procesar cierta información en la consulta para poder utilizarla con cada elemento más adelante.

+1

He leído la pregunta unas cuantas veces y debe haber algo que me falta. ¿Podría aclarar un poco exactamente lo que está buscando? –

+0

Imagine la consulta como una matriz de filas y columnas. Por lo general, solo heredo las columnas de la estructura de la tabla con el simple SELECCIONAR * DESDE, pero ahora, necesitaría insertar mi propia columna en ella. – Skuta

+2

tal vez deberías tomar _una_ mirada a la documentación .. – hop

Respuesta

63

algo así como

SELECT id, email, IF(actived = 1, 'enabled', 'disabled') AS account_status 
FROM users 

esto le permite realizar operaciones y lo muestran como columnas.

EDIT:

también se puede usar combinaciones y muestran como columnas operaitons:

SELECT u.id, e.email, IF(c.id IS NULL, 'no selected', c.name) as country 
FROM users u LEFT JOIN countries c ON u.country_id = c.id 
+0

Esta publicación mueve mi conocimiento de las declaraciones simples de mysql un camino a seguir :), ¿significa que puedo crear CUALQUIER "columna"? – Skuta

+0

¡sí! como magia..! –

+1

Pero no puede usar esta nueva columna para realizar operaciones o nuevas evaluaciones de IF ... ¿o sí? – Luis

3

SELECCIONAR sólo recupera los datos de la base de datos, no cambia la propia tabla.

Si se escribe

SELECT a AS b FROM x 

"b" es sólo un nombre de alias en la consulta. No crea una columna adicional. Su resultado en el ejemplo solo contendría una columna llamada "b". Pero la columna en la tabla se mantendría "a". "b" es solo otro nombre.

Realmente no entiendo lo que quiere decir con "para que pueda usarlo con cada elemento más adelante". ¿Quiere decir más adelante en la declaración de selección o más adelante en su aplicación? Tal vez podría proporcionar algún código de ejemplo.

0

Su sintaxis crearía un alias para a como b, pero no tendría alcance más allá de los resultados de la declaración. Suena como es posible que desee crear un VIEW

49

prueba este si desea crear una columna de "edad" virtual dentro de una instrucción de selección:

select brand, name, "10" as age from cars... 
+0

Buen truco. Simple, pero nunca lo había intentado antes.¡Esto era exactamente lo que me preguntaba! : D – Atomox

+1

Gracias, simple y claro !! – realmag777

+0

Aquí hay un pequeño truco complicado para trabajar con otras tablas en la misma consulta mysql: SELECCIONAR tpt. *, (SELECCIONAR COUNT (*) DE lugares WHERE tpt.id = places.type) como obj_count FROM 'places_types' as tpt ORDER POR tpt.name ASC LIMIT?,? – realmag777

6

puede añadir columnas virtuales como

SELECT '1' as temp 

Pero si intenta colocar la condición en una columna generada adicionalmente, no funcionará y mostrará un mensaje de error ya que la columna no existe.

Podemos resolver este problema mediante la devolución de resultados SQL como table.ie,

SELECT tb.* from (SELECT 1 as temp) as tb WHERE tb.temp = 1 
Cuestiones relacionadas