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

Comment utiliser la sous-requête MySQL

王林
Libérer: 2023-06-02 23:09:41
avant
1652 Les gens l'ont consulté

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`;
Copier après la connexion

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`
);
Copier après la connexion

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);
Copier après la connexion

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!

Étiquettes associées:
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers numéros
MySQL arrête le processus
Depuis 1970-01-01 08:00:00
0
0
0
Env中mysql
Depuis 1970-01-01 08:00:00
0
0
0
Erreur lors de l'installation de MySQL sous Linux
Depuis 1970-01-01 08:00:00
0
0
0
php - problème de surveillance MySQL
Depuis 1970-01-01 08:00:00
0
0
0
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal