Explicación detallada del proceso de ejecución de subconsultas no correlacionadas de mysql y subconsultas relacionadas

Hace algún tiempo, hubo una declaración SQL relacionada con la subconsulta, no entendí cómo se ejecutó y por qué apareció el resultado. Realmente enredado. Hablemos del proceso de ejecución de subconsultas no correlacionadas y subconsultas relacionadas.

Subconsultas no correlacionadas

Primero observe una subconsulta no correlacionada con la instrucción SQL.

 

Requisito: Consultar la información básica de los alumnos con una puntuación de 70 en la tabla de alumnos y la tabla de calificaciones del alumno.

seleccione t.sno, t.sname, t.sage, t.sgentle, t.sbirth, t.sdept del estudiante t donde t.sno in (seleccione f.sno de garde f donde f.score = 70)

 

La ejecución de esta declaración sql es simple,

1. Busque el ID de estudiante sno con una puntuación de 70 en la tabla de calificaciones y luego devuelva el ID de estudiante a la consulta de los padres como condición de la cláusula where.

2. Busque otra información básica del estudiante con el número de estudiante en la tabla de estudiantes.

Subconsultas relacionadas

La llamada subconsulta correlacionada significa que resolver la subconsulta correlacionada no puede ser lo mismo que resolver la subconsulta ordinaria. La subconsulta se resuelve una vez y luego se resuelve la consulta principal. Dado que la consulta interna de la subconsulta relacionada está relacionada con la consulta externa, debe evaluarse repetidamente.

Veamos la instrucción SQL de la subconsulta relacionada.

Requisito: Obtener información sobre todos los estudiantes que han participado en el curso "Conceptos básicos de computación" y cuyas calificaciones están por encima de 80 en la tabla de estudiantes y la calificación del expediente académico del estudiante.

seleccione t.sno, t.sname, t.sage, t.sgentle, t.sbirth, sdept del estudiante t donde 80 <= (seleccione f.score del grado f donde f.sno = t.sno y f.cname = '计算机 基础')

El proceso de ejecución de la subconsulta:

1. Primero tome el valor sno del primer registro de la tabla de estudiantes de la consulta principal, ingrese la subconsulta y compare las condiciones de su cláusula where "donde f.sno = t.sno y f.cname = 'computer basic' ", Si coincide, se devolverá la puntuación.

2. Regrese a la consulta principal, juzgue que la condición de la cláusula where de la consulta principal es 80 <= la puntuación devuelta, si la condición es verdadera, devuelva el primer registro.

3. Saque el segundo dato de la tabla de alumnos de la consulta principal y repita la operación anterior hasta que se recuperen todos los registros de la tabla de la consulta principal.

para resumir: 

Al comparar el proceso de ejecución de SQL de estas dos consultas, se puede ver que la diferencia entre las subconsultas relacionadas y las subconsultas no correlacionadas es que las subconsultas relacionadas dependen de la consulta principal, y la consulta principal y la subconsulta están relacionados, especialmente en la declaración where de la subconsulta. Esto es especialmente cierto en China. Comprenda su proceso de ejecución y luego observe el código de la subconsulta relevante y lo comprenderá todo de una vez.

 

 

Supongo que te gusta

Origin blog.csdn.net/liuming690452074/article/details/114233365
Recomendado
Clasificación