Partage de technologie

MySQL : utiliser sur ou où après avoir quitté la jointure ?

2024-07-11

한어Русский языкEnglishFrançaisIndonesianSanskrit日本語DeutschPortuguêsΕλληνικάespañolItalianoSuomalainenLatina

Dans MySQL,LEFT JOIN Utilisé pour renvoyer tous les enregistrements de la table de gauche (c'est-à-dire la table à gauche du mot-clé LEFT JOIN), même s'il n'y a aucun enregistrement correspondant dans la table de droite. Pour les enregistrements qui ne correspondent pas dans la bonne table, la partie droite de l'ensemble de résultats sera remplie avec NULL.à proposONetWHEREL'utilisation des clauses, elles sont enLEFT JOINLes rôles sont différents :

  • SUR Clause : utilisée pour définir les conditions de jointure, c'est-à-dire déterminer quels enregistrements doivent être joints.Lorsque vous devez combiner des enregistrements en fonction de la relation entre certaines valeurs de champ dans les tableaux de gauche et de droite, ces conditions doivent être placéesON plus tard.si dansONIl existe ultérieurement des restrictions conditionnelles supplémentaires sur la table de droite, qui seront également appliquées lors de la connexion, mais n'affecteront pas le principe de renvoi de tous les enregistrements de la table de gauche.
  • Clause : utilisée pour les paires qui ont réussiJOIN L'ensemble de résultats généré par l'opération est filtré davantage.Quand la condition est poséeWHEREclause, les enregistrements qui ne remplissent pas les conditions (que ce soit de la table de gauche ou de la table de droite) seront supprimés, ce qui peut affecter l'intention initiale de renvoyer tous les enregistrements de la table de gauche, en particulier lors de la gestion des valeurs NULL, vous devez être très prudent.

Premier cas particulier :

Supposons que nous ayons deux tables, l'une estemployees(table des employés), l'autre estdepartments(table des départements), nous souhaitons connaître tous les employés et leurs noms de département, même si certains employés ne sont pas affectés à un département spécifique.

tableau des employés :

identifiantentifiantnom
1Alice
2Bob
3Carol

tableau des départements :

identifiantentifiantnom
1HEURE
2IL
3Commercialisation

dans,employeestableaudepartment_idLe champ peut être NULL, indiquant qu’aucun service n’est attribué.

Exemple d'utilisation de ON :

SELECT employees.name, departments.name AS department_name
FROM employees
LEFT JOIN departments ON employees.department_id = departments.id;