SubconsultaTabela SubconsultaTabela

A SubconsultaTabela é uma subconsulta que retorna várias linhas.

Diferentemente da SubconsultaEscalar, a SubconsultaTabela é permitida apenas:

  • como uma ExpressãoTabela em uma Cláusula FROM
  • com EXISTS, IN, ou comparações quantificadas.

Quando utilizada como uma ExpressãoTabela em uma Cláusula FROM, pode retornar várias colunas. Quando utilizada com EXISTS, pode retornar várias colunas somente se for utilizado o * para retornar várias colunas.

Quando utilizada com IN ou comparações quantificadas, deve retornar uma única coluna.

Sintaxe (Consulta) -- subconsulta utilizada como ExpressãoTabela na cláusula FROM SELECT TABELA_VÔOS_VIRTUAL.ID_VÔO FROM (SELECT ID_VÔO, AEROPORTO_ORIGEM, AEROPORTO_DESTINO FROM VÔOS WHERE (AEROPORTO_ORIGEM = 'SFO' OR AEROPORTO_DESTINO = 'SCL') ) AS TABELA_VÔOS_VIRTUAL -- subconsulta (VALUES expressão) utilizada como uma ExpressãoTabela -- na cláusula FROM SELECT MINHA_COLUNA1 FROM (VALUES (1, 2), (3, 4)) AS MINHA_TABELA (MINHA_COLUNA1, MINHA_COLUNA2) -- subconsulta com EXISTS SELECT * FROM VÔOS WHERE EXISTS (SELECT * FROM VÔOS WHERE AEROPORTO_DESTINO = 'SFO' AND AEROPORTO_ORIGEM = 'GRU') -- subconsulta usada com IN SELECT ID_VÔO, NÚMERO_SEGMENTO FROM VÔOS WHERE ID_VÔO IN (SELECT ID_VÔO FROM VÔOS WHERE AEROPORTO_ORIGEM = 'SFO' OR AEROPORTO_DESTINO = 'SCL') -- subconsulta utilizada com uma comparação quantificada SELECT NOME, COMISS FROM EQUIPES WHERE COMISS > (SELECT AVG(BÔNUS + 800) FROM EMPREGADOS WHERE COMISS < 5000);