Rumah >pangkalan data >tutorial mysql >Bagaimana untuk Mendapatkan Rekod dengan Nilai Lalai Menggunakan Pertanyaan IN untuk Data Hilang?
Menggunakan Pertanyaan IN untuk Mengambil Rekod dengan Nilai Lalai untuk Data Yang Hilang
Apabila membuat pertanyaan untuk aktiviti dalam talian pengguna dalam julat tarikh tertentu menggunakan klausa IN
, anda mungkin menghadapi situasi di mana sesetengah ID pengguna dalam keadaan IN
kekurangan entri yang sepadan dalam jadual OnlineUsage
. Untuk mengendalikan perkara ini dan mengembalikan nilai lalai untuk data yang hilang, struktur pertanyaan yang diubah suai diperlukan.
Pertanyaan standard mungkin hanya mengembalikan hasil untuk ID dengan rekod yang sepadan. Untuk memasukkan semua ID daripada senarai IN
anda, walaupun yang tidak sepadan dengan data penggunaan dalam talian, susun semula pertanyaan untuk memanfaatkan LEFT JOIN
(atau yang setara). Kuncinya ialah untuk mengalihkan keadaan julat tarikh daripada klausa WHERE
ke keadaan JOIN
.
<code class="language-sql">SELECT users.Name, users.ID, IFNULL(SUM(OnlineUsage.Minutes), 0) AS MinutesOnline FROM users LEFT JOIN OnlineUsage ON users.ID = OnlineUsage.ID AND OnlineUsage.Date >= '2016-01-01 00:00:00' AND OnlineUsage.Date < '2017-01-01 00:00:00' WHERE users.ID IN (1, 2, 3, 4, 5) -- Your list of IDs here GROUP BY users.ID;</code>
Pertanyaan yang disemak ini menggunakan LEFT JOIN
untuk memastikan semua pengguna disertakan. Fungsi IFNULL
mengendalikan kes di mana SUM(OnlineUsage.Minutes)
mengembalikan NULL
(untuk pengguna tanpa data penggunaan dalam talian) dengan menggantikan 0
. Klausa GROUP BY
adalah penting untuk mengagregatkan MinutesOnline
dengan betul untuk setiap pengguna. Pendekatan ini menjamin set data yang lengkap, memberikan perwakilan yang konsisten bagi semua pengguna dalam jangka masa yang ditentukan, tidak kira sama ada mereka mempunyai rekod penggunaan dalam talian.
Atas ialah kandungan terperinci Bagaimana untuk Mendapatkan Rekod dengan Nilai Lalai Menggunakan Pertanyaan IN untuk Data Hilang?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!