Maison > base de données > tutoriel mysql > Comment remplir les dates manquantes dans une plage MySQL avec des valeurs nulles ?

Comment remplir les dates manquantes dans une plage MySQL avec des valeurs nulles ?

Linda Hamilton
Libérer: 2025-01-23 16:47:09
original
600 Les gens l'ont consulté

How to Fill Missing Dates in a MySQL Range with Zero Values?

La plage de dates MySQL remplit les valeurs manquantes

Supposons que vous ayez un tableau avec deux colonnes (date et score) et que vous souhaitiez remplir les dates manquantes pour obtenir une séquence continue de valeurs. Par exemple, si votre tableau contient actuellement les données suivantes :

<code>日期      分数
-----------------
2010-08-01  19
2010-08-02  21
2010-08-04  14
2010-08-07  10
2010-08-10  14</code>
Copier après la connexion

Vous souhaitez remplir les dates manquantes (03-08-2010, 05-08-2010 et 06-08-2010) avec des 0 pour obtenir le résultat suivant :

<code>日期      分数
-----------------
2010-08-01  19
2010-08-02  21
2010-08-03  0
2010-08-04  14
2010-08-05  0
2010-08-06  0
2010-08-07  10
2010-08-10  14</code>
Copier après la connexion

Pour y parvenir vous pouvez utiliser la requête suivante :

<code class="language-sql">SELECT x.ts AS timestamp,
       COALESCE(y.score, 0) AS cnt
FROM (SELECT DATE_ADD('2010-06-06', INTERVAL n.id - 1 DAY) AS ts
        FROM numbers n
       WHERE DATE_ADD('2010-06-06', INTERVAL n.id -1 DAY) < '2010-08-11') x
LEFT JOIN your_table y ON DATE(x.ts) = DATE(y.date);</code>
Copier après la connexion

Voici une répartition de la requête :

  • Créez un tableau de nombres (nombres) avec des valeurs auto-incrémentées.
  • Utilisez DATE_ADD pour construire une liste de dates à partir d'une date de début spécifiée ('2010-06-06' dans l'exemple) et incrémentez le nombre de jours en fonction de l'identifiant du nombre dans la table des nombres.
  • Utilisez LEFT JOIN pour fusionner la liste des dates avec votre table d'origine en fonction de la partie date.
  • Utilisez COALESCE pour remplacer toutes les valeurs nulles dans y.score par 0.
  • Vous pouvez utiliser DATE_FORMAT pour modifier le format de la date si nécessaire.

Veuillez remplacer your_table par le nom réel de votre table. Assurez-vous d'avoir une table nommée numbers qui contient une colonne à incrémentation automatique nommée id qui contient des entiers consécutifs commençant à 1. Sinon, vous devez d'abord en créer un. Par exemple : CREATE TABLE numbers (id INT AUTO_INCREMENT PRIMARY KEY); Insérez ensuite un nombre suffisant d'enregistrements pour couvrir votre plage de dates.

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