Data bersilang dalam MySQL
Isu:
Dalam MySQL, pengguna memerlukan kaedah untuk memotong data daripada dua jadual, "rekod" dan "data," berdasarkan berbilang medan dalam jadual "rekod". Contoh sebelumnya menggunakan INTERSECT dalam DBMS lain mengembalikan hasil yang tidak memuaskan.
Penyelesaian:
MySQL tidak menyediakan sokongan langsung untuk pengendali INTERSECT. Walau bagaimanapun, terdapat pendekatan alternatif untuk mencapai kefungsian yang diingini.
Satu pilihan ialah menggunakan gabungan dalaman:
SELECT DISTINCT records.id FROM records INNER JOIN data d1 on d1.id = records.firstname AND d1.value = "john" INNER JOIN data d2 on d2.id = records.lastname AND d2.value = "smith"
Pertanyaan ini menyertai jadual "rekod" dengan dua kejadian " data", menapis untuk baris yang mempunyai nilai yang sepadan dalam kedua-dua cantuman.
Alternatif lain ialah in klausa:
SELECT DISTINCT records.id FROM records WHERE records.firstname IN ( select id from data where value = 'john' ) AND records.lastname IN ( select id from data where value = 'smith' )
Pendekatan ini memilih baris daripada jadual "rekod" yang medan "nama depan" dan "nama keluarga" sepadan dengan nilai dalam jadual "data".
Kaedah ini menyediakan cara yang berkesan untuk menyilang data dalam MySQL dengan menggabungkan baris daripada berbilang jadual berdasarkan kriteria biasa.
Atas ialah kandungan terperinci Bagaimana untuk Cekap Menyilang Data daripada Pelbagai Jadual dalam MySQL?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!