MariaDB: Subconsultas

Los datos expuestos en este blog, son solo de índole informativo. Por favor realiza siempre una copia de seguridad antes de realizar cualquier cambio en tu proyecto.

MariaDB: Subconsultas

Este tutorial de MariaDB explica cómo usar subconsulta En MariaDB, con sintaxis y ejemplos.

¿Qué es una subconsulta en MariaDB?

En MariaDB, una subconsulta es una consulta dentro de una consulta. Puede crear subconsultas en sentencias SQL. Estas subconsultas pueden residir en la cláusula WHERE, la cláusula FROM o la cláusula SELECT.

notas

  • En MariaDB, las subconsultas también se denominan CONSULTA INTERNA o SELECCIÓN INTERNA.
  • En MariaDB, una consulta principal que contiene una subconsulta también se denomina CONSULTA EXTERNA o SELECCIÓN EXTERNA.

Dónde cláusula

En la mayoría de los casos, las subconsultas se encuentran en la cláusula WHERE. Estas subconsultas también se denominan subconsultas anidadas.

Por ejemplo:

SELECT s.site_id, s.site_name
FROM sites s
WHERE s.site_id IN
   (SELECT p.site_id
    FROM pages p
    WHERE p.file_size > 89);

La parte de la subconsulta de la instrucción SELECT anterior es:

(SELECT p.site_id
 FROM pages p
 WHERE p.file_size > 89);

Esta subconsulta le permite encontrar todos los valores de site_id de la tabla de páginas cuyo file_size es mayor que 89. Luego use esa subconsulta para filtrar los resultados de la consulta principal con una condición IN.

Esta subconsulta también se puede escribir como una unión INTERNA de la siguiente manera:

SELECT s.site_id, s.site_name
FROM sites s
INNER JOIN pages p
ON s.site_id = p.site_id
WHERE p.file_size > 89;

Este INNER JOIN se ejecutará de manera más eficiente que la subconsulta original. Sin embargo, es importante tener en cuenta que no todas las subconsultas se pueden reescribir mediante combinaciones.

Cláusula DESDE

Las subconsultas también se pueden encontrar en la cláusula FROM. Estas se denominan vistas en línea.

Por ejemplo:

SELECT sites.site_name, subquery1.total_size
FROM sites,
 (SELECT site_name, SUM(file_size) AS total_size
  FROM pages
  GROUP BY site_name) subquery1
WHERE subquery1.site_name = sites.site_name;

En este ejemplo, creamos una subconsulta en la cláusula FROM de la siguiente manera:

(SELECT site_name, SUM(file_size) AS total_size
 FROM pages
 GROUP BY site_name) subquery1

La subconsulta tiene un alias como subconsulta1. Este será el nombre utilizado para referirse a esta subconsulta o cualquiera de sus campos.

cláusula de elección

Las subconsultas también se pueden encontrar en la cláusula SELECT. Las funciones de agregado, como SUM, COUNT, MIN, MAX o AVG, se usan normalmente cuando desea recuperar cálculos, pero no desea que la función de agregado se aplique a la consulta principal.

Por ejemplo:

SELECT p1.site_name,
  (SELECT MAX(file_size)
   FROM pages p2
   WHERE p1.site_id = p2.site_id) subquery2
FROM pages p1;

En este ejemplo, creamos una subconsulta en la cláusula SELECT de la siguiente manera:

(SELECT MAX(file_size)
 FROM pages p2
 WHERE p1.site_id = p2.site_id) subquery2

La subconsulta tiene un alias como subconsulta2. Este será el nombre utilizado para referirse a esta subconsulta o cualquiera de sus campos.

El truco para colocar una subconsulta en la cláusula SELECT es que la subconsulta debe devolver un solo valor. Esta es la razón por la cual las funciones agregadas como SUM, COUNT, MIN, MAX o AVG se usan a menudo en las subconsultas.