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

Bagaimana untuk menggabungkan hasil pertanyaan dalam MySQL

王林
王林ke hadapan
2023-05-26 22:22:322805semak imbas

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

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);

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;

Bagaimana untuk menggabungkan hasil pertanyaan dalam MySQL

SELECT s_id, f_name, f_price FROM fruits WHERE s_id IN(101,103);

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);

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!

Kenyataan:
Artikel ini dikembalikan pada:yisu.com. Jika ada pelanggaran, sila hubungi admin@php.cn Padam