Disons que j'ai la table SQL suivante employee
, et que vous voulez répondre à la question "qui habite au même endroit que Joe (à part Joe lui-même)?" à l'aide d'un auto-jointure:Comment filtrer la valeur nécessaire dans l'instruction WHERE en auto-jointure dans SQL
| name | location |
|---------|-----------|
| Joe | New York |
| Sunil | India |
| Bob | New York |
| Melissa | Kentucky |
Pour répondre à la question que je pourrais écrire:
SELECT employee_name
FROM (
SELECT DISTINCT e1.name as employee_name
FROM employee e1
JOIN employee e2 ON e1.location = e2.location
WHERE e2.name = "Joe"
)
WHERE employee_name <> "Joe"
Y at-il un moyen d'obtenir ce résultat en utilisant une seule déclaration SELECT
? Je ne sais pas s'il y a un moyen.
Ajoutez 'e1.name <> e2.name' dans la condition de jointure. –