Rumah >pangkalan data >tutorial mysql >Bagaimanakah Saya Boleh Cari Rekod Padanan Merentasi Berbilang Jadual dalam MySQL Tanpa Menggunakan INTERSECT?

Bagaimanakah Saya Boleh Cari Rekod Padanan Merentasi Berbilang Jadual dalam MySQL Tanpa Menggunakan INTERSECT?

Susan Sarandon
Susan Sarandonasal
2024-12-27 09:32:13278semak imbas

How Can I Find Matching Records Across Multiple Tables in MySQL Without Using INTERSECT?

Mencari Persimpangan Rekod dalam MySQL Menggunakan Klausa INNER JOIN dan IN

Apabila bekerja dengan berbilang jadual, selalunya menjadi perlu untuk mencari rekod yang sepadan dengan kriteria tertentu merentas berbilang medan . Dalam senario ini, anda ingin mencari rekod di mana medan nama pertama dan nama keluarga sepadan dengan nilai tertentu dalam jadual lain.

Satu pendekatan ialah menggunakan arahan INTERSECT, seperti yang dilihat dalam contoh pertanyaan SQL anda. Walau bagaimanapun, MySQL tidak menyokong INTERSECT. Sebaliknya, terdapat kaedah alternatif untuk mencapai hasil yang diingini.

Menggunakan INNER JOIN

INNER JOIN boleh digunakan untuk menapis rekod yang mempunyai baris yang sepadan dalam jadual lain. Dalam kes anda, anda boleh menggunakan pertanyaan berikut:

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 akan mengembalikan ID unik rekod yang memenuhi kedua-dua syarat.

Menggunakan Klausa IN

Satu lagi alternatif ialah menggunakan klausa IN untuk menapis nilai yang 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'
)

Pertanyaan ini akan kembalikan hasil yang sama seperti pertanyaan INNER JOIN dengan memilih rekod yang mana nilai nama pertama dan nama keluarga sepadan dengan nilai yang ditentukan dalam subkueri.

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Cari Rekod Padanan Merentasi Berbilang Jadual dalam MySQL Tanpa Menggunakan INTERSECT?. 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