Maison > base de données > tutoriel mysql > le corps du texte

Comment afficher les enregistrements mensuels dans MySQL même avec des données manquantes ?

Susan Sarandon
Libérer: 2024-11-06 22:01:02
original
512 Les gens l'ont consulté

How to Show Monthly Records in MySQL Even with Missing Data?

Requête MySQL pour afficher les enregistrements mensuels même avec des données manquantes

Question :

Dans un Dans une situation où vous devez récupérer des enregistrements mensuels à partir d'une table utilisateur, vous pouvez rencontrer des données manquantes pour certains mois. Comment pouvez-vous surmonter ce problème et assurer l'affichage de tous les mois, qu'ils contiennent ou non des données ?

Réponse :

Pour récupérer les enregistrements utilisateur mensuels, y compris ceux des mois sans entrées, une solution peut être implémentée en utilisant une combinaison d'une table dérivée et d'une jointure gauche.

SELECT COUNT(u.userID) AS total, m.month, YEAR(m.merge_date) AS year
FROM (
           SELECT '2013-01-01' AS merge_date
           UNION SELECT '2013-02-01' AS merge_date
           UNION SELECT '2013-03-01' AS merge_date
           UNION SELECT '2013-04-01' AS merge_date
           UNION SELECT '2013-05-01' AS merge_date
           UNION SELECT '2013-06-01' AS merge_date
           UNION SELECT '2013-07-01' AS merge_date
           UNION SELECT '2013-08-01' AS merge_date
           UNION SELECT '2013-09-01' AS merge_date
           UNION SELECT '2013-10-01' AS merge_date
           UNION SELECT '2013-11-01' AS merge_date
           UNION SELECT '2013-12-01' AS merge_date
          ) AS m
LEFT JOIN users u
       ON MONTH(m.merge_date) = MONTH(u.userRegistredDate)
          AND YEAR(m.merge_date) = YEAR(u.userRegistredDate)
GROUP BY m.merge_date
ORDER BY 1+1;
Copier après la connexion

Explication :

  • La table dérivée "m" génère une table virtuelle avec une colonne nommée "merge_date" qui représente tous les mois d'une année spécifique.
  • L'opération LEFT JOIN relie la table "users" à la table dérivée "m. "
  • La clause group by agrège le résultat par date de fusion pour compter le nombre d'utilisateurs pour chaque mois.
  • La clause order by est utilisée pour trier les résultats par mois dans l'ordre croissant.

En utilisant la jointure gauche, la requête récupère les données de la table "utilisateurs" et de la table dérivée, garantissant que les résultats incluent tous les mois, même ceux sans aucun enregistrement utilisateur correspondant. Cette méthode gère efficacement les situations où les données de certains mois sont manquantes.

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
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!