Rumah > pangkalan data > tutorial mysql > Bagaimana untuk Mengisi Tarikh Hilang dalam Julat MySQL dengan Nilai Sifar?

Bagaimana untuk Mengisi Tarikh Hilang dalam Julat MySQL dengan Nilai Sifar?

Linda Hamilton
Lepaskan: 2025-01-23 16:47:09
asal
552 orang telah melayarinya

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

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>
Salin selepas log masuk

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>
Salin selepas log masuk

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>
Salin selepas log masuk

Berikut ialah pecahan pertanyaan:

  • Buat jadual nombor (nombor) dengan nilai kenaikan automatik.
  • Gunakan DATE_ADD untuk membina senarai tarikh daripada tarikh mula yang ditentukan ('2010-06-06' dalam contoh) dan menambah bilangan hari berdasarkan id nombor dalam jadual nombor.
  • Gunakan LEFT JOIN untuk menggabungkan senarai tarikh dengan jadual asal anda y berdasarkan bahagian tarikh.
  • Gunakan COALESCE untuk menggantikan sebarang nilai nol dalam y.score dengan 0.
  • Anda boleh menggunakan DATE_FORMAT untuk menukar format tarikh jika perlu.

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!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan