Rumah >pangkalan data >tutorial mysql >Beberapa kaedah MySQL biasa untuk menggabungkan hasil pertanyaan

Beberapa kaedah MySQL biasa untuk menggabungkan hasil pertanyaan

PHPz
PHPzasal
2023-04-21 11:27:205301semak imbas

MySQL ialah salah satu sistem pengurusan pangkalan data hubungan yang paling popular pada masa ini. Bagi pengendali pangkalan data, menyoal data, mengira dan memprosesnya adalah kemahiran penting. Tetapi kadangkala, kita perlu menggabungkan beberapa keputusan untuk memudahkan untuk menganalisis dan memproses keputusan. Dalam MySQL, terdapat pelbagai cara untuk mencapai ini.

Di bawah, kami akan memperkenalkan beberapa kaedah MySQL yang biasa digunakan untuk menggabungkan hasil pertanyaan.

  1. UNION

UNION ialah salah satu cara paling biasa untuk menggabungkan hasil pertanyaan. Ia boleh menggabungkan hasil berbilang pernyataan SELECT dan mengalih keluar baris pendua daripada hasil akhir.

Sebagai contoh, kami mempunyai dua jadual A dan B, yang mempunyai lajur yang sama:

SELECT column1, column2 FROM A
UNION
SELECT column1, column2 FROM B;

Pertanyaan ini akan menggabungkan data dalam jadual A dan B serta mengalih keluar baris pendua . Perlu diingatkan bahawa UNION hanya boleh menggabungkan hasil dua pernyataan SELECT. Jika anda perlu menggabungkan hasil tiga atau lebih pernyataan SELECT, anda perlu menggunakan operator UNION beberapa kali.

  1. UNION ALL

UNION ALL sangat serupa dengan UNION, tetapi tidak mengalih keluar baris pendua. Apabila menggunakan UNION ALL, baris pendua akan dikekalkan.

Sebagai contoh, terdapat dua jadual A dan B, yang mempunyai lajur yang sama:

SELECT column1, column2 FROM A
UNION ALL
SELECT column1, column2 FROM B;

Pertanyaan ini akan menggabungkan data dalam jadual A dan B serta menyimpan baris pendua.

Memandangkan UNION ALL tidak perlu mengalih keluar baris pendua, ia lebih pantas dan lebih cekap daripada UNION. Walau bagaimanapun, jika data adalah sangat besar, prestasi pertanyaan mungkin terjejas.

  1. INNER JOIN

INNER JOIN boleh menggabungkan data daripada dua atau lebih jadual dan memadankan data dalam lajur biasa mereka. Operasi ini hanya akan mengembalikan hasil apabila terdapat padanan antara data dalam dua jadual.

Sebagai contoh, terdapat dua jadual A dan B, ia mempunyai lajur lajur1 yang sama:

SELECT A.column1, A.column2, B.column3
FROM A
INNER JOIN B
ON A.column1 = B.column1;

Pertanyaan ini akan mengembalikan baris data yang sepadan dalam jadual A dan B. Dalam contoh ini, hanya baris dengan padanan dikembalikan.

  1. LEFT JOIN

LEFT JOIN sangat serupa dengan INNER JOIN, ia juga boleh menggabungkan data daripada dua atau lebih jadual dan menggabungkan lajur biasa mereka sepadan dengan data dalam . Walau bagaimanapun, ia mengembalikan keputusan bukan sahaja untuk perlawanan, tetapi juga untuk keputusan tanpa perlawanan di jadual kiri.

Sebagai contoh, terdapat dua jadual A dan B, ia mempunyai lajur lajur1 yang sama:

SELECT A.column1, A.column2, B.column3
FROM A
LEFT JOIN B
ON A.column1 = B.column1;

Pertanyaan ini akan mengembalikan semua baris data dalam jadual A dan data yang sepadan dalam jadual B Baris, jika tiada data dalam jadual B yang sepadan dengan jadual A, nilai NULL akan dikembalikan.

  1. RIGHT JOIN

RIGHT JOIN adalah bertentangan dengan LEFT JOIN, ia mengembalikan keputusan tanpa padanan dalam jadual kanan.

Sebagai contoh, terdapat dua jadual A dan B, ia mempunyai lajur lajur1 yang sama:

SELECT A.column1, A.column2, B.column3
FROM A
RIGHT JOIN B
ON A.column1 = B.column1;

Pertanyaan ini akan mengembalikan semua baris data dalam jadual B dan data yang sepadan bagi jadual A Baris, jika tiada data dalam jadual A yang sepadan dengan jadual B, nilai NULL akan dikembalikan.

  1. SERTAI LUAR PENUH

SERTAI LUAR PENUH boleh menggabungkan semua baris data daripada dua jadual bersama walaupun tiada padanan dalam kedua-dua jadual .

MySQL tidak menyokong pernyataan FULL OUTER JOIN. Walau bagaimanapun, UNION ALL boleh digunakan bersama dengan LEFT JOIN dan RIGHT JOIN untuk mencapai kesan yang sama.

Sebagai contoh, terdapat dua jadual A dan B, ia mempunyai lajur lajur1 yang sama:

SELECT A.column1, A.column2, B.column3
FROM A
LEFT JOIN B
ON A.column1 = B.column1
UNION ALL
SELECT A.column1, A.column2, B.column3
FROM A
RIGHT JOIN B
ON A.column1 = B.column1
WHERE A.column1 IS NULL;

Pertanyaan ini akan mengembalikan padanan untuk semua baris data dalam jadual A dan B dan Terdapat tiada baris data yang sepadan.

Kesimpulan

Di atas ialah kaedah biasa untuk menggabungkan hasil pertanyaan dalam MySQL. Kaedah yang anda pilih bergantung pada hasil yang anda perlukan dan prestasi pertanyaan anda.

Apabila melaksanakan pertanyaan, sentiasa beri perhatian kepada kecekapan pertanyaan. Dalam kebanyakan kes, operasi UNION mengambil masa yang lama. Jika anda membuat pertanyaan dengan set data yang besar, anda harus mengelak daripada menggunakan arahan UNION dan sebaliknya menggunakan kaedah lain yang tersedia untuk mengoptimumkan prestasi pertanyaan.

Sudah tentu, untuk senario perniagaan tertentu, kita juga perlu memilih kaedah yang hendak digunakan berdasarkan keperluan perniagaan sebenar.

Atas ialah kandungan terperinci Beberapa kaedah MySQL biasa untuk menggabungkan hasil pertanyaan. 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