2010-12-20 17 views
6

¿Es posible que una subconsulta devuelva dos valores en la consulta externa? Tales como:¿Es posible que una subconsulta devuelva dos valores?

SELECT 1, 
     (SELECT COUNT(*), MAX(*) FROM test_table WHERE test=123) 
FROM another_table 

O hay una mejor manera de hacer esto?

+0

Si another_table tiene 20 filas, se obtendría 20 filas de salida que contiene los mismos datos, a menos que el column 'test' solo está presente en Another_Table y no en Test_Table (en cuyo caso, es una manera divertida de escribir la restricción (que es un ejemplo bastante extremo de 'meiosis'). –

Respuesta

6

Si utiliza la subconsulta en la cláusula FROM en lugar de la lista de campos, puede tratar la salida como una tabla y consultar las columnas separadas.

+0

Estoy un poco confundido por eso. ¿Puedes explicar un poco más, por favor? –

+2

'SELECCIONE Aa, Ab FROM (SELECCIONE a, b FROM MyTable) AS A;' – siride

+0

@kevin Su subconsulta, puede ir como una tabla adicional en la cláusula 'FROM' con un alias (ej. 'AS test_t', nombre los campos en la subconsulta también), y consulte los valores en la lista de campos:' SELECT 1, test_t.count, test_t.max FROM (SELECT ... ' – Orbling

1

Usted se acaba de seleccionar los números ya que los resultados de modo podrían no acaba de hacer:

SELECT 1, COUNT(*), MAX(*) FROM test_table WHERE test=123 
+0

Son dos tablas diferentes: \ –

0

No es posible

mysql> select 1, (select 2, 3) from dual; 
ERROR 1241 (21000): Operand should contain 1 column(s) 

Si se trata de dos mesas y cuáles son los resultados en una sola línea , debes preformar una unión.

0

Hmm, depende de qué es exactamente lo que quiere hacer con los datos, puede unir dos tablas usando la sintaxis JOIN, y una de las tablas puede ser una subconsulta. Creo que eso es probablemente lo que quieres.

Ni siquiera soy usuario lo que su consulta actual va a hacer ..

Documentación: http://dev.mysql.com/doc/refman/5.0/en/join.html

Cuestiones relacionadas