Maison >base de données >tutoriel mysql >Comment remplir les dates manquantes dans une plage MySQL avec des valeurs nulles ?
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>
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>
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>
Voici une répartition de la requête :
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!