Rumah > pangkalan data > tutorial mysql > Bagaimana untuk menggabungkan hasil pertanyaan dalam MySQL

Bagaimana untuk menggabungkan hasil pertanyaan dalam MySQL

王林
Lepaskan: 2023-05-26 22:22:32
ke hadapan
2895 orang telah melayarinya

Berbilang SELECT kenyataan boleh digabungkan menjadi satu set hasil menggunakan kata kunci UNION. Apabila digabungkan, bilangan lajur dan jenis data yang sepadan dengan kedua-dua jadual mestilah sama. Asingkan pernyataan SELECT menggunakan kata kunci UNION atau UNION ALL. UNION tidak menggunakan kata kunci ALL, dan rekod pendua dipadamkan semasa pelaksanaan, dan semua baris yang dikembalikan adalah unik; Format sintaks asas adalah seperti berikut:

SELECT column,... FROM table1
UNION [ALL]
SELECT column,... FROM table2
Salin selepas log masuk

Tanya maklumat semua buah dengan harga kurang daripada 9, tanya maklumat semua buah dengan s_id bersamaan dengan 101 dan 103, gunakan UNION untuk menyambung hasil pertanyaan, pernyataan SQL adalah seperti berikut:

SELECT s_id, f_name, f_price
FROM fruits
WHERE f_price < 9.0
UNION SELECT s_id, f_name, f_price
FROM fruits
WHERE s_id IN(101,103);
Salin selepas log masuk

Hasil pertanyaan gabungan adalah seperti berikut:

Bagaimana untuk menggabungkan hasil pertanyaan dalam MySQL

UNION menggabungkan hasil berbilang pernyataan SELECT ke dalam set hasil tunggal , seperti yang dinyatakan sebelum ini.. Keputusan setiap pernyataan SELECT boleh dilihat secara berasingan:

SELECT s_id, f_name, f_price FROM fruits WHERE f_price < 9.0;
Salin selepas log masuk

Bagaimana untuk menggabungkan hasil pertanyaan dalam MySQL

SELECT s_id, f_name, f_price FROM fruits WHERE s_id IN(101,103);
Salin selepas log masuk

Bagaimana untuk menggabungkan hasil pertanyaan dalam MySQL

Seperti yang dapat dilihat daripada hasil pertanyaan berasingan, pernyataan SELECT pertama Untuk menanyakan buah-buahan yang harganya kurang daripada 9, pernyataan SELECT kedua menanyakan buah-buahan yang disediakan oleh pembekal 101 dan 103. Gunakan UNION untuk memisahkan dua pernyataan SELECT Selepas pelaksanaan, gabungkan hasil output ke dalam set hasil tunggal dan padam rekod pendua.

Dalam contoh sebelumnya, disebabkan penggunaan UNION ALL untuk mengandungi baris pendua, rekod yang sama telah dijana semasa membuat pertanyaan secara berasingan. UNION mengalih keluar baris pendua secara automatik daripada set hasil pertanyaan Jika anda ingin mengembalikan semua baris yang sepadan tanpa pemadaman, anda boleh menggunakan UNION ALL.

Soal maklumat semua buah yang harganya kurang daripada 9, tanya maklumat semua buah yang s_idnya bersamaan dengan 101 dan 103, gunakan UNION ALL untuk menyambung hasil pertanyaan, pernyataan SQL adalah seperti berikut:

SELECT s_id, f_name, f_price
FROM fruits
WHERE f_price < 9.0
UNION ALL
SELECT s_id, f_name, f_price
FROM fruits
WHERE s_id IN(101,103);
Salin selepas log masuk

Hasil pertanyaan adalah seperti berikut:

Bagaimana untuk menggabungkan hasil pertanyaan dalam MySQL

Seperti yang anda lihat daripada keputusan, jumlah bilangan rekod di sini adalah sama dengan jumlah bilangan rekod yang dikembalikan oleh dua pernyataan SELECT Hasil pertanyaan sambungan tidak mengalih keluar baris pendua.

Petua: Perbezaan antara UNION dan UNION ALL: Fungsi menggunakan UNION ALL bukan untuk memadamkan baris pendua, ditambah dengan pernyataan kata kunci ALL memerlukan kurang sumber semasa melaksanakan, jadi gunakannya sebanyak mungkin . Oleh itu, apabila anda mengetahui bahawa terdapat baris pendua tetapi ingin mengekalkan baris ini, dan pastikan tiada data pendua dalam hasil pertanyaan atau tidak perlu mengalih keluar data pendua, anda harus menggunakan UNION ALL untuk menambah baik pertanyaan. kecekapan.

Atas ialah kandungan terperinci Bagaimana untuk menggabungkan hasil pertanyaan dalam MySQL. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Label berkaitan:
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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan