Rumah >pangkalan data >tutorial mysql >Bagaimana untuk Meniru Fungsi INTERSECT SQL untuk Carian Medan Berbilang dalam MySQL?
MySQL Equivalent of INTERSECT for Multiple Field Search
Dalam SQL, pengendali INTERSECT menggabungkan dua atau lebih pernyataan SELECT, hanya mengembalikan baris yang memenuhi semua syarat. Seorang pengguna baru-baru ini menghadapi cabaran dalam melakukan carian medan berbilang menggunakan INTERSECT dalam MySQL.
Pertanyaan
Pertanyaan berikut bertujuan untuk mendapatkan semula medan 'id' daripada jadual 'rekod' untuk baris yang sepadan dengan nilai tertentu dalam jadual 'data' untuk kedua-dua 'nama pertama' dan 'nama keluarga' medan:
SELECT records.id FROM records, data WHERE data.id = records.firstname AND data.value = "john" INTERSECT SELECT records.id FROM records, data WHERE data.id = records.lastname AND data.value = "smith"
Alternatif MySQL
Malangnya, MySQL tidak menyokong pengendali INTERSECT. Walau bagaimanapun, terdapat beberapa kaedah alternatif untuk mencapai hasil yang sama.
Inner Join
Satu pendekatan ialah menggunakan inner join, yang mengembalikan semua baris yang mempunyai padanan nilai dalam kedua-dua jadual:
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"
IN Klausa
Alternatif lain ialah menggunakan klausa IN, yang menguji sama ada nilai wujud dalam subkueri:
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' )
Alternatif yang serasi MySQL ini menyediakan penyelesaian yang berkesan untuk melaksanakan pelbagai medan carian, menawarkan tahap fleksibiliti dan prestasi yang tinggi.
Atas ialah kandungan terperinci Bagaimana untuk Meniru Fungsi INTERSECT SQL untuk Carian Medan Berbilang dalam MySQL?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!