Maison > base de données > tutoriel mysql > Comment effectuer une jointure à gauche avec une table pré-filtrée en SQL ?

Comment effectuer une jointure à gauche avec une table pré-filtrée en SQL ?

Susan Sarandon
Libérer: 2025-01-14 13:31:46
original
743 Les gens l'ont consulté

How to Perform a Left Join with a Pre-Filtered Table in SQL?

Exécutez efficacement la jointure gauche SQL et pré-filtrez les données de table

Lorsque vous travaillez avec plusieurs tables, il est souvent nécessaire de filtrer l'une des tables avant de les rejoindre. Cet exemple implique deux tables : Customer et Entry.

Le but est de filtrer la table des entrées en fonction d'une catégorie spécifique 'D' avant d'effectuer une jointure gauche entre ces deux tables. Le résultat attendu est le suivant : récupérer tous les enregistrements de la table client, que les enregistrements pertinents existent ou non dans la table d'entrée en même temps, exclure les enregistrements de la table d'entrée qui ne remplissent pas les conditions de catégorie ;

La requête SQL suivante montre comment y parvenir :

<code class="language-sql">SELECT c.Customer, c.State, e.Entry
FROM Customer c
LEFT JOIN Entry e
   ON c.Customer=e.Customer
   AND e.Category='D'</code>
Copier après la connexion

En déplaçant la condition de filtre WHERE dans la condition JOIN, nous pouvons appliquer un filtrage de catégorie à la table d'entrée avant de rejoindre. Cela garantit que seuls les enregistrements d'entrée qui répondent aux critères de catégorie sont inclus dans les résultats de jointure.

Exemple de tableau

<code>客户表 (Customer):

╔══════════╦═══════╗
║ Customer ║ State ║
╠══════════╬═══════╣
║ A        ║ S     ║
║ B        ║ V     ║
║ C        ║ L     ║
╚══════════╩═══════╝

条目表 (Entry):

╔══════════╦═══════╦══════════╗
║ Customer ║ Entry ║ Category ║
╠══════════╬═══════╬══════════╣
║ A        ║  5575 ║ D        ║
║ A        ║  6532 ║ C        ║
║ A        ║  3215 ║ D        ║
║ A        ║  5645 ║ M        ║
║ B        ║  3331 ║ A        ║
║ B        ║  4445 ║ D        ║
╚══════════╩═══════╩══════════╝</code>
Copier après la connexion

Résultats

<code>╔══════════╦═══════╦═══════╗
║ Customer ║ State ║ Entry ║
╠══════════╬═══════╬═══════╣
║ A        ║ S     ║  5575 ║
║ A        ║ S     ║  3215 ║
║ B        ║ V     ║  4445 ║
║ C        ║ L     ║  NULL ║
╚══════════╩═══════╩═══════╝</code>
Copier après la connexion

En résumé, en utilisant la clause AND dans la condition JOIN, nous pouvons filtrer les tables avant de les joindre, récupérant ainsi les données plus précisément en fonction des conditions spécifiées.

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!

source:php.cn
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 articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal