Rumah > pangkalan data > tutorial mysql > Bagaimana untuk Mengembalikan Nilai Lalai untuk ID yang Hilang dalam Pertanyaan SQL Menggunakan Klausa IN?

Bagaimana untuk Mengembalikan Nilai Lalai untuk ID yang Hilang dalam Pertanyaan SQL Menggunakan Klausa IN?

Linda Hamilton
Lepaskan: 2025-01-17 06:41:08
asal
803 orang telah melayarinya

How to Return Default Values for Missing IDs in an SQL Query Using IN Clause?

Mengambil Nilai Lalai untuk ID Hilang dalam Pertanyaan Klausa SQL IN

Artikel ini menangani cabaran pertanyaan SQL biasa: mendapatkan semula data untuk ID yang ditentukan, termasuk nilai lalai apabila ID tidak ditemui dalam jadual yang berkaitan. Senario ini melibatkan pengambilan data aktiviti pengguna dalam julat tarikh, menggunakan klausa IN untuk menapis mengikut ID pengguna. Pertanyaan asal, bagaimanapun, mengetepikan pengguna tanpa aktiviti dalam jangka masa yang ditentukan.

Masalahnya berpunca daripada LEFT JOIN pertanyaan yang berkelakuan seperti INNER JOIN disebabkan oleh syarat yang dikenakan pada jadual bercantum (OnlineUseage). Ini dengan berkesan menapis keluar ID yang tidak terdapat dalam OnlineUseage semasa julat tarikh yang ditentukan.

Penyelesaian adalah untuk menempatkan semula keadaan julat tarikh daripada klausa JOIN kepada klausa WHERE. Ini membolehkan LEFT JOIN berfungsi dengan betul, termasuk semua ID daripada jadual users. ID tanpa entri yang sepadan dalam OnlineUseage kemudiannya akan menerima nilai lalai.

Berikut ialah pertanyaan yang diperbetulkan:

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

Pertanyaan yang disemak ini memastikan semua ID dalam klausa IN disertakan dalam keputusan. Jika ID tidak mempunyai entri yang sepadan dalam OnlineUseage dalam julat tarikh, IFNULL(SUM(users.Minutes), 0) memberikan nilai lalai 0 untuk MinutesOnline. Pendekatan ini berkesan mengendalikan ID yang hilang dan mengembalikan hasil lalai yang diingini, tidak kira sama ada ID tersebut terdapat dalam jadual OnlineUseage untuk julat tarikh yang ditentukan.

Atas ialah kandungan terperinci Bagaimana untuk Mengembalikan Nilai Lalai untuk ID yang Hilang dalam Pertanyaan SQL Menggunakan Klausa IN?. 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