Maison  >  Article  >  base de données  >  Comment utiliser la sous-requête MySQL

Comment utiliser la sous-requête MySQL

王林
王林avant
2023-06-02 23:09:411509parcourir

Sous-requête corrélée

Processus d'exécution de sous-requête corrélée

Si l'exécution d'une sous-requête dépend d'une requête externe, c'est généralement parce que la table de la sous-requête utilise une table externe et effectue une association conditionnelle, donc à chaque fois qu'elle est exécutée, l'externe La requête et la sous-requête doivent être recalculées. Ces sous-requêtes sont appelées sous-requêtes corrélées. Au fur et à mesure que chaque ligne de la requête principale est exécutée, les sous-requêtes corrélées sont exécutées ligne par ligne.

Comment utiliser la sous-requête MySQL

Instructions : utilisez les colonnes de la requête principale dans la sous-requête

Titre : recherchez le nom, le salaire et l'identifiant du département des employés dont le salaire est supérieur au salaire moyen du département

Méthode 1 : Sous-requête associée

Comment utiliser la sous-requête MySQL

Utilisez la sous-requête dans FROM

SELECT last_name,salary,e1.department_id
FROM employees e1,(SELECT department_id,AVG(salary) dept_avg_sal FROM employees GROUP
BY department_id) e2
WHERE e1.`department_id` = e2.department_id
AND e2.dept_avg_sal < e1.`salary`;

from sous-requête de type : la sous-requête fait partie de from, la sous-requête doit être citée avec (), et la sous-requête doit recevoir un nom différent

, et la traiter comme une image "Temporaire table virtuelle" est utilisée.

Titre : requête ID d'employé, salaire, trié par nom_departement

Utilisez la sous-requête dans ORDER BY :

SELECT employee_id,salary
FROM employees e
ORDER BY (
SELECT department_name
FROM departments d
WHERE e.`department_id` = d.`department_id`
);

Mots-clés EXISTS et NOT EXISTS

La sous-requête associée est généralement utilisée avec l'opérateur EXISTS, utilisez Pour vérifier s'il existe des lignes qui satisfont la condition dans la sous-requête.

S'il n'y a aucune ligne qui satisfait la condition dans la sous-requête :

La condition renvoie FALSE

Continuer la recherche dans la sous-requête

S'il y a une ligne qui satisfait la condition dans la sous-requête :

Ne pas continuer à recherche dans la sous-requête

La condition renvoie VRAI

Le mot-clé NON EXISTE signifie que si une certaine condition n'existe pas, VRAI est renvoyé, sinon FALSE est renvoyé.

Titre : interrogez les informations Employee_id, Last_name, Job_id, Department_id du chef d'entreprise

SELECT employee_id, last_name, job_id, department_id
FROM employees e1
WHERE EXISTS ( SELECT *
FROM employees e2
WHERE e2.manager_id =
e1.employee_id);

La sous-requête est en fait un jugement conditionnel après interrogation via la table inconnue, tandis que l'auto-jointure est basée sur la propre table de données connue

Jugement, donc le traitement de l'auto-jointure est optimisé dans la plupart des SGBD.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer