¡Hola, bienvenidos y bienvenidas! Dando continuidad al curso MySQL 8, hoy veremos lo que son las subconsulta en MySQL.
Con las consultas podemos obtener, crear, modificar y borrar información almacenada en una base de datos. Sin embargo existen ocasiones en las que se requiere obtener información más detallada y específica, para esto, se debe realizar consultas más complejas que implican más de una tabla y más de una condición para esto podemos utilizar lo que son las subconsultas.
¡Empecemos!
¿Qué son las subconsultas?
Las subconsultas son consultas que se encuentran dentro de otra consulta más grande en una base de datos. Estas subconsultas se utilizan para obtener un conjunto de datos específico que se utilizará como parte de la consulta principal. Las subconsultas se pueden aplicar en diferentes partes de una consulta, como en las cláusulas WHERE, JOIN, HAVING, etc.
Una de las sintaxis básicas de una subconsulta se puede determinar de la siguiente manera:
SELECT Lista_Columnas FROM Nombre_tabla WHERE Condición = ( SELECT Lista_Columnas2 FROM Nombre_tabla2 WHERE Condiciones );

Subconsultas en la cláusula WHERE
La subconsulta se utiliza para filtrar el resultado de la consulta principal. Por ejemplo, utilizando la tabla “Servicios”, quiero obtener todos los datos del servicio que más costó tiene.
SELECT * FROM clinica_veterinaria.servicios WHERE clinica_veterinaria.servicios.costo = ( SELECT MAX(clinica_veterinaria.servicios.costo) FROM clinica_veterinaria.servicios );
Otro ejemplo, quiero obtener todos los servicios que tienen un costo igual o superior al costo promedio.
SELECT * FROM clinica_veterinaria.servicios WHERE clinica_veterinaria.servicios.costo >= ( SELECT AVG(clinica_veterinaria.servicios.costo) FROM clinica_veterinaria.servicios );
Sentencia IN y NOT IN
La sentencia IN nos permite comparar valores del campo de una tabla que coincida con algún elemento de la lista. También existe la sentencia NOT IN que es lo contrario de IN, devuelve todos los campos que no coincidan con ningún elemento de la lista.
Veamos otro ejemplo, utilizando las tablas “Clientes” y “Mascotas”, quiero obtener a todas las mascotas que viven en la zona central.
SELECT * FROM clinica_veterinaria.mascotas WHERE clinica_veterinaria.mascotas.cliente_id IN ( SELECT clinica_veterinaria.clientes.id FROM clinica_veterinaria.clientes WHERE clinica_veterinaria.clientes.zona = 'Zona Central' );
Sentencia EXITST
La sentencia EXITST se utiliza para determinar si existen resultados de la consulta o no, generalmente se utilizan en subconsultas para restringir el resultado de la consulta superior.
Veamos un último ejemplo, utilizando las tablas “Mascotas” y “Mascota Servicios”, quiero obtener a todos los clientes que hayan realizado al menos un servicio.
SELECT * FROM clinica_veterinaria.mascotas WHERE EXISTS ( SELECT * FROM clinica_veterinaria.`mascota-servicio` WHERE clinica_veterinaria.mascotas .id = clinica_veterinaria.`mascota-servicio`.mascota_id );
Recuerden que todos los ejemplos realizados pueden ir probando en MySQL Workbench, así tener una idea más clara de la consulta y los resultados que arroja.

Es importante tener en cuenta que las subconsultas pueden ser una herramienta poderosa, pero también pueden tener un impacto en el rendimiento de la base de datos si no se utilizan adecuadamente. Hasta aquí la clase de subconsulta en MySQL.
En la siguiente clase veremos lo que es EXPLAIN en MySQL.
¡Saludos y éxitos!

Victor Peña
Desarrollador de software Backend Developer, experto en Laravel Framework, PHP, JavaScript y MySQL. Creador de contenidos de emprendimiento y desarrollo de software.
Excelente información , concisa y fácil de entender , espero que sigan compartiendo mas información acerca de estos temas , ya que verdaderamente me fue de mucha ayuda , les comparto un manual de como instalar MySQL ya que la instalación se me complico un poco , pero este manual me ayudo a terminarla de manera exitosa.