Julat tarikh MySQL mengisi nilai yang tiada
Andaikan anda mempunyai jadual dengan dua lajur (tarikh dan skor) dan anda ingin mengisi tarikh yang tiada untuk mendapatkan jujukan nilai yang berterusan. Contohnya, jika jadual anda pada masa ini mengandungi data berikut:
<code>日期 分数 ----------------- 2010-08-01 19 2010-08-02 21 2010-08-04 14 2010-08-07 10 2010-08-10 14</code>
Anda mahu mengisi tarikh yang tiada (2010-08-03, 2010-08-05 dan 2010-08-06) dengan 0s untuk mendapatkan keputusan berikut:
<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>
Untuk mencapai ini, anda boleh menggunakan pertanyaan berikut:
<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>
Berikut ialah pecahan pertanyaan:
Sila gantikan your_table
dengan nama jadual sebenar anda. Pastikan anda mempunyai jadual bernama numbers
yang mengandungi lajur kenaikan automatik bernama id
yang mengandungi integer berturut-turut bermula pada 1. Jika tidak, anda perlu menciptanya terlebih dahulu. Contohnya: CREATE TABLE numbers (id INT AUTO_INCREMENT PRIMARY KEY);
Kemudian masukkan bilangan rekod yang mencukupi untuk meliputi julat tarikh anda.
Atas ialah kandungan terperinci Bagaimana untuk Mengisi Tarikh Hilang dalam Julat MySQL dengan Nilai Sifar?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!