MySQL: Mengendalikan Tarikh Hilang dengan Cekap dalam Julat Tarikh
Panduan ini menunjukkan kaedah yang sangat cekap untuk mengisi jurang dalam urutan tarikh dalam pangkalan data MySQL anda. Teknik teras menggunakan jadual NUMBERS—jadual ringkas yang mengandungi siri integer—untuk menjana tarikh yang tiada. Dengan menyertai jadual NUMBERS ini dengan jadual data anda, kami boleh membuat julat tarikh yang lengkap, walaupun titik data tiada. Markah sedia ada dikekalkan; markah yang hilang diwakili oleh nilai lalai (mis., 0).
Mencipta dan Mengisi Jadual NUMBERS:
Mula-mula, buat jadual NUMBERS (jika belum wujud):
<code class="language-sql">CREATE TABLE IF NOT EXISTS numbers (id INT UNSIGNED AUTO_INCREMENT PRIMARY KEY);</code>
Seterusnya, isikannya dengan bilangan integer yang mencukupi. Bilangan baris hendaklah sekurang-kurangnya sama besar dengan bilangan hari maksimum dalam julat tarikh anda. Kaedah mudah (walaupun berpotensi perlahan untuk julat yang sangat besar) ialah:
<code class="language-sql">INSERT INTO numbers (id) VALUES (NULL); -- Repeat as needed to fill the desired range</code>
(Nota: Untuk julat yang sangat besar, kaedah yang lebih cekap untuk mengisi jadual NUMBERS wujud, seperti menggunakan prosedur tersimpan atau skrip luaran.)
Menjana Julat Tarikh Lengkap:
Pertanyaan berikut menggunakan jadual NUMBERS untuk menjana jujukan tarikh dan mendapatkan semula markah yang sepadan, mengisi tarikh yang tiada dengan skor lalai 0:
<code class="language-sql">SELECT DATE_ADD('2010-06-06', INTERVAL n.id - 1 DAY) AS timestamp, COALESCE(t.score, 0) AS score -- Replace 't.score' with your actual score column FROM numbers n LEFT JOIN your_table t ON DATE(t.date_column) = DATE_ADD('2010-06-06', INTERVAL n.id - 1 DAY) -- Replace 'your_table' and 'date_column' WHERE DATE_ADD('2010-06-06', INTERVAL n.id - 1 DAY) <= '2010-06-15'; -- Adjust start and end dates as needed</code>
Ingat untuk menggantikan your_table
, date_column
dan score
dengan nama jadual dan lajur sebenar anda. Laraskan tarikh mula dan tamat dalam fungsi DATE_ADD
untuk meliputi julat yang anda inginkan. Fungsi COALESCE
mengendalikan markah yang hilang dengan anggun. Anda boleh melaraskan pemformatan tarikh menggunakan fungsi DATE_FORMAT
jika perlu.
Pendekatan ini menawarkan penyelesaian berskala dan cekap untuk mengurus tarikh yang hilang dalam data MySQL anda. Pertimbangkan untuk mengoptimumkan populasi jadual NUMBERS untuk julat tarikh yang sangat besar.
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Mengisi Tarikh Hilang dengan Cekap dalam Julat Tarikh MySQL?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!