Rumah >pangkalan data >tutorial mysql >Bagaimanakah Klausa WHERE Mempengaruhi MySQL LEFT JOIN Apabila Mendapatkan Data Berkaitan?

Bagaimanakah Klausa WHERE Mempengaruhi MySQL LEFT JOIN Apabila Mendapatkan Data Berkaitan?

Linda Hamilton
Linda Hamiltonasal
2024-12-18 22:46:14172semak imbas

How Does the WHERE Clause Affect MySQL LEFT JOINs When Retrieving Related Data?

Menggunakan MySQL JOIN dengan WHERE Klausa untuk Mendapatkan Data Berkaitan

Dalam MySQL, menyertai jadual membolehkan anda menggabungkan data daripada berbilang jadual menjadi satu set keputusan. Walau bagaimanapun, menambah klausa WHERE pada cantuman luar, seperti LEFT JOIN, boleh mengubah gelagat cantuman.

Masalah:

Pertimbangkan senario di mana anda mempunyai dua jadual, "kategori" dan "langganan_kategori_pengguna," dan anda mahu mendapatkan semula semua kategori, termasuk yang dilanggan oleh pengguna tertentu dengan "id_pengguna" tertentu. Pertanyaan awal di bawah melaksanakan LEFT JOIN antara dua jadual:

SELECT *
FROM categories
LEFT JOIN user_category_subscriptions 
     ON user_category_subscriptions.category_id = categories.category_id

Cabaran:

Pada asalnya, matlamatnya adalah untuk melaksanakan gabungan dalaman (atau equi join ) menggunakan klausa WHERE. Walau bagaimanapun, pertanyaan di atas ialah sambung luar, khususnya sambung luar kiri, yang tidak menghalang baris daripada dikembalikan walaupun ia tidak mempunyai nilai yang sepadan dalam jadual "langganan_kategori_pengguna".

Penyelesaian:

Untuk mencapai hasil yang diinginkan, klausa WHERE harus dimasukkan ke dalam pernyataan JOIN itu sendiri, dan bukannya klausa WHERE:

SELECT *
FROM categories
LEFT JOIN user_category_subscriptions ON 
    user_category_subscriptions.category_id = categories.category_id
    AND user_category_subscriptions.user_id = 1

Dalam cantuman kiri, klausa WHERE bertindak sebagai penapis yang digunakan selepas operasi cantum. Dengan memasukkan syarat dalam pernyataan JOIN, anda secara berkesan menyatakan syarat yang mesti dipenuhi untuk baris disertakan dalam keputusan. Ini memastikan bahawa hanya baris yang "id_pengguna" bersamaan dengan 1 akan digabungkan dan dikembalikan.

Atas ialah kandungan terperinci Bagaimanakah Klausa WHERE Mempengaruhi MySQL LEFT JOIN Apabila Mendapatkan Data Berkaitan?. 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