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
Lepaskan: 2024-12-27 09:32:13
asal
273 orang telah melayarinya

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"
Salin selepas log masuk

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'
)
Salin selepas log masuk

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!

sumber:php.cn
Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan