Rumah >pangkalan data >tutorial mysql >Bagaimanakah Saya Boleh Menghimpunkan Data SQL Semasa Mengendalikan Nilai NULL dalam Klausa `GROUP BY`?

Bagaimanakah Saya Boleh Menghimpunkan Data SQL Semasa Mengendalikan Nilai NULL dalam Klausa `GROUP BY`?

Barbara Streisand
Barbara Streisandasal
2025-01-04 02:26:40794semak imbas

How Can I Group SQL Data While Handling NULL Values in the `GROUP BY` Clause?

Mengumpulkan Data dengan Nilai NULL dalam SQL

Menghimpunkan data menggunakan fungsi GROUP BY ialah teknik yang berkuasa untuk meringkaskan dan mendapatkan semula data. Walau bagaimanapun, kadangkala adalah wajar untuk mengumpulkan data sambil mengabaikan nilai NULL. Ini boleh dicapai melalui manipulasi bijak klausa GROUP BY.

Dalam pertanyaan yang diberikan, GROUP BY digunakan untuk mengumpulkan baris mengikut medan ancestor. Walau bagaimanapun, apabila nenek moyang adalah NULL untuk berbilang baris, mereka dikumpulkan bersama, menyebabkan hanya satu baris dikembalikan. Untuk mengatasi isu ini, kami boleh menggunakan helah yang melibatkan fungsi IFNULL.

Kami boleh mengubah suai pertanyaan seperti berikut:

SELECT `table1`.*, 
    IFNULL(ancestor,UUID()) as unq_ancestor
    GROUP_CONCAT(id SEPARATOR ',') AS `children_ids`
FROM `table1` 
WHERE (enabled = 1) 
GROUP BY unq_ancestor

Dalam pertanyaan yang disemak ini, kami menggunakan IFNULL untuk menetapkan yang unik pengecam (UUID) kepada nilai NULL dalam medan ancestor. Ini mencipta lajur unik yang dipanggil unq_ancestor yang kemudiannya digunakan untuk mengumpulkan. Akibatnya, semua baris, termasuk baris yang mempunyai nilai nenek moyang NULL, akan dikumpulkan secara berasingan, membolehkan anda mendapatkan semula semua data yang dikehendaki.

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Menghimpunkan Data SQL Semasa Mengendalikan Nilai NULL dalam Klausa `GROUP BY`?. 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