# 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);

Tópico pai: Instruções
Conceitos relacionados
Interação com o sistema de dependências
Instruções CREATE
Instruções DROP
Instruções RENAME
Instruções SET
Referências relacionadas
Instrução ALTER TABLE
CALL (PROCEDIMENTO)
Cláusula CONSTRAINT
Instrução DECLARE GLOBAL TEMPORARY TABLE
Instrução DELETE
Cláusula FOR UPDATE
Cláusula FROM
Cláusula GROUP BY
Cláusula HAVING
INNER JOIN
Instrução INSERT
Operação JOIN
LEFT OUTER JOIN
Instrução LOCK TABLE
Cláusula ORDER BY
Consulta
RIGHT OUTER JOIN
SubconsultaEscalar
ExpressãoSeleção
Instrução SELECT
ExpressãoTabela
Instrução UPDATE
VALUES Expressão
Cláusula WHERE
Cláusula WHERE CURRENT OF