Rumah >pangkalan data >tutorial mysql >Bagaimana untuk Meniru Fungsi INTERSECT SQL untuk Carian Medan Berbilang dalam MySQL?

Bagaimana untuk Meniru Fungsi INTERSECT SQL untuk Carian Medan Berbilang dalam MySQL?

Mary-Kate Olsen
Mary-Kate Olsenasal
2025-01-05 20:53:47238semak imbas

How to Replicate SQL's INTERSECT Functionality for Multiple Field Searches in 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!

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