subconsulta [MySQL] [base de datos]

subconsulta

Una subconsulta es una consulta en la que una declaración de consulta está anidada dentro de otra declaración de consulta

  • Las subconsultas se han introducido desde MySQL 4.1
  • El uso de subconsultas en SQL mejora en gran medida la capacidad de las consultas SELECT porque, en muchos casos, la consulta necesita obtener datos del conjunto de resultados primero, o primero calcular un resultado de datos de una tabla y luego usar el resultado de la primera consulta. en la Como condición de juicio para la segunda consulta, después de que tengamos una subconsulta, podemos hacerlo en una declaración SELECT en este caso

Entendamos las subconsultas a través del siguiente ejemplo.

Pregunta: Consulta el nombre de la persona en la tabla de empleados que tiene un salario mayor que Abel

  • Tenemos tres soluciones a este problema.

Método 1: use la declaración SELECT dos veces

SELECT salary
FROM employees
WHERE last_name = 'abel';
  • En este momento, primero debemos consultar el salario del empleado llamado abel en la tabla de empleados. En este momento, si el salario de abel consultado es 11000
SELECT last_name,salry
FROM employees
WHERE salary >11000;
  • Entonces aquí estamos para consultar el nombre (apellido) de la persona cuyo salario es mayor que el salario de abel (11000) en la tabla de empleados

Resumen: este tipo de consulta que usa dos instrucciones SELECT separadas es demasiado ineficiente, porque en este momento nuestro sistema de administración de base de datos y la base de datos tienen que interactuar dos veces, y la eficiencia será muy pobre

Método 2: método de autoconexión (uno de los métodos de consulta de varias tablas)

SELECT last_name,salry
FROM employees
WHERE salary >11000;
  • Aquí usamos el salario de los empleados de abel (11000) obtenido de la primera consulta como condición de comparación para esta consulta, y luego podemos calcular el nombre de la persona cuyo salario es mayor que el de abel.

Resumen: la eficiencia de esta consulta con dos declaraciones de selección es muy baja, porque en este momento usamos dos declaraciones de selección, el sistema de administración de la base de datos y la base de datos interactúan dos veces, por lo que la eficiencia es relativamente baja

Método 2: método de autoconexión (uno de los métodos de consulta de varias tablas)

SELECT e2.last_name,e2.salary
FROM employyees e1,employeese2
WHERE e2.salary>e1.salary
AND e1.last_name = 'abel';
  • En este momento, se realiza una autoconexión. En este momento, hay dos tablas idénticas e1 y e2. En este momento, nuestra condición de conexión de múltiples tablas es que el registro de e2 coincidirá con el registro en la tabla e1 con un salario menor que el registro, y luego también se realiza el filtrado condicional, es decir, se filtran los registros llamados abel en la tabla e1, luego el resultado de la consulta en este momento es el nombre y el salario de todos los empleados en el mesa e2 con un salario mayor que abel en la mesa e1.

Resumen: este método de autoconexión solo usa una declaración SELECT una vez, por lo que la eficiencia de la consulta es relativamente alta, entonces, ¿por qué debería proponerse una subconsulta? — Porque no todos los problemas que pueden resolverse mediante subconsultas pueden usar el método de autoconexión para resolver es correcto que este problema se pueda resolver mediante el uso de subconsultas o autoconexión

Método 3: el método de subconsulta

SELECT last_name,salary
FROM employees
WHERE salary > (SELECT salary
                FROM employees
                WHERE last_name = 'abel');
  • En este momento, la consulta se realiza mediante una subconsulta. En este momento, se utiliza una instrucción SELECT dentro de la instrucción SELECT. La consulta anidada en esta consulta se denomina subconsulta.

Especificación de denominación: consulta externa (consulta principal), consulta interna (consulta secundaria)

Aviso:

  1. La subconsulta (consulta interna) se ejecuta antes que la consulta principal (consulta externa)
    • Es decir, primero se ejecuta la subconsulta y luego se ejecuta la consulta principal.
  2. El resultado de la subconsulta es utilizado por la consulta principal (consulta externa)
  3. Las subconsultas están encerradas entre un par de paréntesis.
  4. Si colocamos la subconsulta en la condición de comparación, generalmente la colocamos en el lado derecho de la condición de comparación (lo que puede mejorar la estética del código)
  5. Una operación de una sola línea corresponde a una subconsulta de una sola línea, y un operador de varias líneas corresponde a una subconsulta de varias líneas

Clasificación de subconsultas:

  • Aquí clasificamos desde dos perspectivas

Ángulo 1: el número de entradas en el resultado devuelto por la consulta interna

Subfunción de una sola fila frente a subconsulta de varias filas

Si la consulta en angular dos se ejecuta varias veces

Subconsultas correlacionadas frente a subconsultas no correlacionadas

  • Si la consulta interna se ejecuta varias veces, la llamamos subconsulta correlacionada, entonces, ¿por qué la consulta interna se ejecuta varias veces relacionada?
    • De hecho, después de nuestra investigación en este momento, podemos encontrar que la consulta interna se ejecutará varias veces solo cuando la consulta interna esté relacionada con la consulta externa.

Supongo que te gusta

Origin blog.csdn.net/m0_57001006/article/details/123701064
Recomendado
Clasificación