Est-il possible de convertir cette sous-requête en jointure?Convertir une sous-requête en une jointure
SELECT staff_no
FROM doctor
WHERE NOT EXISTS (SELECT *
FROM patient
WHERE staff_no = consultant_no);
Est-il possible de convertir cette sous-requête en jointure?Convertir une sous-requête en une jointure
SELECT staff_no
FROM doctor
WHERE NOT EXISTS (SELECT *
FROM patient
WHERE staff_no = consultant_no);
SELECT staff_no
FROM doctor
LEFT JOIN
patient
ON staff_no = consultant_no
WHERE consultant_no IS NULL
Pour que cela soit efficace, consultant_no
devrait être indexée et déclarée NOT NULL
.
Si ce n'est pas le cas, choisissez une colonne déclarée comme NOT NULL
dans le patient et remplacez consultant_no
par cette colonne dans votre clause WHERE
.
Voir cet article dans mon blog pour comparer trois méthodes pour faire cette requête dans MySQL
:
SELECT staff_no
FROM doctor
LEFT JOIN patient
ON staff_no = consultant_no
WHERE consultant_no IS NULL