Sintaxe de Subquery


Uma subquery é uma instrução SELECT dentro de outra instrução. Por exemplo:

SELECT * FROM t1 WHERE column1 = (SELECT column1 FROM t2);

No exemplo acima, SELECT * FROM t1 ... é a consulta principal (ou instrução principal), e (SELECT column1 FROM t2) é a subquery. Dizemos que a subquery está aninhada na consulta principal, e de fato é possível aninhar subqueries dentro de outras subqueries, a uma grande profundidade. uma subquery deve estar sempres dentro de parenteses.

A partir da versão 4.1. o MariaDB suporta todas as formas de subqueries e operações que o padrão SQL exige, assim como alguns recursos que são especificos do MariaDB. A principal vantagem das subqueries são:

Com versões MariaDB anteriores era necessário evitar ou contornar as subqueries, mas as pessoas que começam a escrever código agora descobrirão que subqueries são uma parte muito útil do pacote de ferramentas.

Aqui está uma instrução exemplo que mostra o ponto principal sobre a sintaxe de subquery como especificado pelo SQL padrão e suportado no MariaDB.

DELETE FROM t1
WHERE s11 > ANY
 (SELECT COUNT(*) /* no hint */ FROM t2
 WHERE NOT EXISTS
 (SELECT * FROM t3
 WHERE ROW(5*t2.s1,77)=
 (SELECT 50,11*s1 FROM t4 UNION SELECT 50,77 FROM
 (SELECT * FROM t5) AS t5)));

Para as versões do MariaDB anteriores a 4.1, a maioria da subqueries podem ser reescritas corretamente usando join e outros métodos. Leia "Rewriting Subqueries for Earlier MariaDB Versions".

Retornar