Rumah >pangkalan data >tutorial mysql >Bagaimana untuk menggabungkan hasil pertanyaan dalam MySQL
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:
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;
SELECT s_id, f_name, f_price FROM fruits WHERE s_id IN(101,103);
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:
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!