Maison > base de données > tutoriel mysql > Comment puis-je récupérer efficacement des données de plusieurs tables à l'aide de jointures et d'unions SQL ?

Comment puis-je récupérer efficacement des données de plusieurs tables à l'aide de jointures et d'unions SQL ?

Barbara Streisand
Libérer: 2025-01-24 01:37:12
original
1003 Les gens l'ont consulté

How Can I Efficiently Retrieve Data from Multiple Tables Using SQL Joins and Unions?

Requête SQL pour renvoyer les données de plusieurs tables

Jointures et unions

  • Jointure interne : Combine les lignes de deux tables en fonction d'une colonne commune, renvoyant uniquement les lignes correspondantes. (Voir Wikipédia pour plus d'informations)
  • Union : Combine les résultats de plusieurs requêtes, mais supprime les lignes en double.
  • Jointure externe gauche : Comprend toutes les lignes du tableau de gauche et les lignes correspondantes du tableau de droite, mais omet les lignes sans correspondance du tableau de droite table.
  • Jointure externe droite : Inclut toutes les lignes de la table de droite et les lignes correspondantes de la table de gauche, mais omet les lignes sans correspondance de la table de gauche.
  • Intersect : Renvoie uniquement les lignes identiques sur plusieurs tables. (Non pris en charge par toutes les bases de données)

Exemples

Inner Join : Récupérer les données des tables "voitures" et "modèles" :

SELECT
    c.ID,
    m.model
FROM
    cars c
INNER JOIN
    models m
ON
    c.model = m.ID
Copier après la connexion

Union: Combinez les résultats de deux requêtes pour obtenez toutes les voitures de sport et 4x4 :

SELECT
    c.ID,
    m.model
FROM
    cars c
INNER JOIN
    models m
ON
    c.model = m.ID
WHERE
    m.ID = 1
UNION
SELECT
    c.ID,
    m.model
FROM
    cars c
INNER JOIN
    models m
ON
    c.model = m.ID
WHERE
    m.ID = 3
Copier après la connexion

Jointure extérieure gauche : Trouvez toutes les marques et leur nombre de voitures, y compris les marques sans aucune voiture :

SELECT
    b.brand,
    COUNT(c.id) AS countOfBrand
FROM
    brands b
LEFT OUTER JOIN
    cars c
ON
    b.ID = c.brand
GROUP BY
    b.brand
Copier après la connexion

Intersects : Récupère uniquement les lignes identiques à travers les "couleurs" et les "modèles" tableaux :

SELECT
    m.model,
    c.color
FROM
    models m
INNER JOIN
    colors c
ON
    m.ID = c.ID
WHERE
    m.model = 'Sports' AND c.color = 'Red'
Copier après la connexion

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!

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