Maison >base de données >tutoriel mysql >Comment joindre une table MySQL uniquement à la ligne la plus récente d'une table associée ?

Comment joindre une table MySQL uniquement à la ligne la plus récente d'une table associée ?

Patricia Arquette
Patricia Arquetteoriginal
2025-01-01 11:18:11632parcourir

How to Join a MySQL Table to Only the Most Recent Row in a Related Table?

MySQL : rejoindre uniquement la ligne la plus récente

Dans ce scénario, vous avez des tables customer et customer_data, où customer_data contient un historique de changements pour chaque client. Votre objectif est de récupérer les informations client en vous joignant uniquement à la ligne la plus récente de customer_data.

Pour y parvenir, utilisez une sous-requête dans la clause WHERE pour identifier l'ID maximum de chaque client dans customer_data. Joignez cette sous-requête à la table client en utilisant la syntaxe LEFT JOIN, comme indiqué ci-dessous :

SELECT c.*,
FROM customer AS c
LEFT JOIN customer_data AS d ON d.customer_id = c.customer_id AND d.ID = (
  SELECT MAX(ID)
  FROM customer_data
  WHERE customer_id = c.customer_id
)
WHERE name LIKE '%Smith%'
LIMIT 10, 20;

Dans cette requête :

  • LEFT JOIN garantit que toutes les lignes de la table client sont inclus dans le résultat, même s'ils n'ont pas de ligne correspondante dans customer_data.
  • La sous-requête dans la clause WHERE calcule l'ID maximum pour chaque client dans customer_data.
  • Le résultat de la sous-requête est ensuite comparé à la colonne ID dans customer_data pour sélectionner uniquement la ligne la plus récente.

Cette approche isole efficacement la ligne la plus récente. entrées pour chaque client et les joint à la table des clients pour un traitement ultérieur.

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:
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