Rumah >pangkalan data >tutorial mysql >Bagaimana untuk Mendapatkan Rekod dengan Nilai Lalai Menggunakan Pertanyaan IN untuk Data Hilang?

Bagaimana untuk Mendapatkan Rekod dengan Nilai Lalai Menggunakan Pertanyaan IN untuk Data Hilang?

Barbara Streisand
Barbara Streisandasal
2025-01-17 06:46:08856semak imbas

How to Retrieve Records with Default Values Using IN Queries for Missing Data?

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!

Kenyataan:
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