Rumah > pangkalan data > tutorial mysql > Bagaimana Mengendalikan Rekod Hilang dalam Pertanyaan IN dengan Nilai Lalai?

Bagaimana Mengendalikan Rekod Hilang dalam Pertanyaan IN dengan Nilai Lalai?

Linda Hamilton
Lepaskan: 2025-01-17 06:36:14
asal
806 orang telah melayarinya

How to Handle Missing Records in an IN Query with Default Values?

Dapatkan nilai lalai untuk keadaan pertanyaan DALAM

Andaikan pertanyaan mendapatkan maklumat pengguna dan bilangan minit mereka berada dalam talian dalam julat tarikh yang ditentukan. Ia menggunakan pertanyaan IN untuk menapis pengguna berdasarkan ID mereka. Matlamatnya adalah untuk mengembalikan nilai lalai untuk ID tersebut yang tidak mempunyai sebarang rekod yang sepadan.

Pertanyaan ringkas:

<code class="language-sql">SELECT users.Name, users.ID, SUM(users.Minutes) AS MinutesOnline
FROM UserTable
     LEFT JOIN OnlineUseage ON OnlineUseage.ID = UserTable.ID
WHERE OnlineUseage.Date >= '2016-01-01 00:00:00' AND OnlineUseage.Date < '2016-01-31 00:00:00'
AND users.ID IN (1,2,3,4,5);</code>
Salin selepas log masuk

Pertanyaan yang diubah suai:

Untuk mencapai hasil yang diingini, alihkan syarat untuk Penggunaan Dalam Talian ke klausa FROM. Ini memastikan bahawa gabungan kiri berkelakuan seperti gabungan dalaman, menapis pengguna tanpa sebarang rekod sepadan dalam Penggunaan Dalam Talian.

<code class="language-sql">SELECT
    users.Name,
    users.ID,
    IFNULL(SUM(users.Minutes), 0) AS MinutesOnline
FROM
    users
    LEFT JOIN OnlineUseage ON
        OnlineUseage.ID = users.ID AND
        OnlineUseage.Date >= '2016-01-01 00:00:00' AND
        OnlineUseage.Date < '2016-01-31 00:00:00'
WHERE users.ID IN (1,2,3,4,5);</code>
Salin selepas log masuk

Pertanyaan kini akan mendapatkan semula pengguna dengan rekod yang sepadan dalam Penggunaan Dalam Talian dan pengguna tanpa rekod yang sepadan, sambil menetapkan MinutesOnline kepada nilai lalai 0 untuk pengguna tersebut tanpa rekod yang sepadan.

Atas ialah kandungan terperinci Bagaimana Mengendalikan Rekod Hilang dalam Pertanyaan IN dengan Nilai Lalai?. 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