Rumah > pangkalan data > tutorial mysql > Bagaimana Mengendalikan Tarikh Hilang dalam Pertanyaan MySQL?

Bagaimana Mengendalikan Tarikh Hilang dalam Pertanyaan MySQL?

Linda Hamilton
Lepaskan: 2024-12-23 11:48:34
asal
262 orang telah melayarinya

How to Handle Missing Dates in MySQL Queries?

Cara Mengisi Jurang Data dalam Pertanyaan MySQL Anda

Soalan ini meneroka isu biasa dalam MySQL, di mana jurang data boleh berlaku apabila membuat pertanyaan antara tarikh tertentu. Pertanyaan sedia ada pengguna mendapatkan semula metrik berasaskan tarikh, tetapi ia tidak termasuk data untuk tarikh yang tiada.

Mengisi Jurang Data menggunakan Sumber Row Dummy

Untuk mengisi jurang data , penyelesaiannya melibatkan mencipta jadual pembantu bernama "tarikh." Jadual ini mengandungi semua tarikh dari julat mula hingga akhir yang dikehendaki. Kemudian, LEFT JOIN dilakukan antara jadual tarikh dan jadual mesej.

Berikut ialah Pertanyaan Diubah Suai:

SELECT  d.dt AS date,
        COUNT(*) AS total,
        SUM(attitude = 'positive') AS positive,
        SUM(attitude = 'neutral') AS neutral,
        SUM(attitude = 'negative') AS negative
FROM    dates d
LEFT JOIN
        messages m
ON      m.posted_at >= d.dt
        AND m.posted_at < d.dt + INTERVAL 1 DAYS
        AND spam = 0
        AND duplicate = 0
        AND ignore = 0
GROUP BY
        d.dt
ORDER BY
        d.dt
Salin selepas log masuk

Penjelasan:

  • Jadual tarikh menjana satu set tarikh yang berbeza dalam yang dikehendaki julat.
  • LEFT JOIN memastikan semua tarikh dalam jadual tarikh disertakan, walaupun tiada mesej sepadan wujud.
  • Penapis dalam klausa ON memastikan bahawa hanya mesej yang sah untuk tarikh yang diberikan disertakan.
  • Klausa GROUP BY mengagregatkan data untuk setiap tarikh.

Alternatif untuk Menggunakan Dummy Rowsource

MySQL adalah unik kerana kekurangan fungsi terbina dalam untuk menjana jujukan tarikh. Walau bagaimanapun, terdapat beberapa pendekatan alternatif yang tersedia dalam sistem pangkalan data lain:

  • PostgreSQL mempunyai fungsi generate_series().
  • Oracle dan SQL Server menyokong rekursi menggunakan CONNECT BY atau CTE rekursif.

Atas ialah kandungan terperinci Bagaimana Mengendalikan Tarikh Hilang dalam Pertanyaan MySQL?. 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