Rumah >pangkalan data >tutorial mysql >Bagaimanakah Fungsi Agregat SQL Boleh Menggabungkan Berbilang Baris dengan Nilai NULL ke dalam Baris Tunggal?

Bagaimanakah Fungsi Agregat SQL Boleh Menggabungkan Berbilang Baris dengan Nilai NULL ke dalam Baris Tunggal?

Barbara Streisand
Barbara Streisandasal
2024-12-28 06:12:14537semak imbas

How Can SQL Aggregate Functions Merge Multiple Rows with NULL Values into a Single Row?

Memilih Data untuk Menggabungkan Berbilang Baris dalam SQL

Pertimbangkan jadual dengan data seperti yang ditunjukkan di bawah:

FK Field1 Field2
3 ABC NULL
3 NULL DEF

Matlamatnya adalah untuk melaksanakan PILIH operasi untuk menggabungkan baris ini menjadi satu baris:

FK Field1 Field2
3 ABC DEF

Fungsi Agregat Penyelesaian

Fungsi agregat boleh digunakan untuk mengabaikan nilai NULL dan menggabungkan nilai bukan NULL daripada berbilang baris yang sepadan. Berikut ialah pertanyaan yang menunjukkan pendekatan ini:

SELECT
    FK,
    MAX(Field1) AS Field1,
    MAX(Field2) AS Field2
FROM
    table1
GROUP BY
    FK;

Dalam pertanyaan ini, kami menggunakan fungsi agregat MAX untuk memilih nilai maksimum untuk Medan1 dan Medan2 daripada baris yang dikumpulkan mengikut FK. Oleh kerana nilai NULL diabaikan oleh fungsi agregat, ini memastikan bahawa hanya nilai bukan NULL digabungkan.

Menguji Penyelesaian

Menggunakan data ujian yang disediakan:

CREATE TABLE table1 (FK int, Field1 varchar(10), Field2 varchar(10));

INSERT INTO table1 VALUES (3, 'ABC', NULL);
INSERT INTO table1 VALUES (3, NULL, 'DEF');
INSERT INTO table1 VALUES (4, 'GHI', NULL);
INSERT INTO table1 VALUES (4, 'JKL', 'MNO');
INSERT INTO table1 VALUES (4, NULL, 'PQR');

Pertanyaan itu menghasilkan hasil yang diingini:

FK Field1 Field2
3 ABC DEF
4 JKL PQR

Atas ialah kandungan terperinci Bagaimanakah Fungsi Agregat SQL Boleh Menggabungkan Berbilang Baris dengan Nilai NULL ke dalam Baris Tunggal?. 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