Rumah > pangkalan data > tutorial mysql > Mengapa saya LEFT JOIN dalam SQL Mengembalikan Keputusan Tidak Dijangka?

Mengapa saya LEFT JOIN dalam SQL Mengembalikan Keputusan Tidak Dijangka?

Patricia Arquette
Lepaskan: 2024-12-31 14:52:14
asal
878 orang telah melayarinya

Why is My LEFT JOIN in SQL Returning Unexpected Results?

Memahami LEFT JOIN: Mengapa Pertanyaan SQL Anda Tidak Mengembalikan Hasil Yang Dijangka

Apabila menggunakan LEFT JOIN dalam SQL, adalah penting untuk mengenali ciri uniknya dan potensi perangkap . Soalan ini menggambarkan contoh di mana pertanyaan LEFT JOIN mengembalikan hasil yang tidak dijangka, mendorong kami untuk menyelidiki mekanik asas dan menyelesaikan isu tersebut.

Operasi LEFT JOIN mengambil semua baris dari jadual kiri (dalam kes ini, #appSteps) tidak kira sama ada ia sepadan dengan jadual yang betul (#appProgress). Mana-mana baris yang tidak sepadan dalam jadual kanan diberikan nilai NULL. Walau bagaimanapun, apabila anda memasukkan jadual yang betul dalam klausa WHERE (p.appId = 101), anda pada asasnya mengubah pertanyaan menjadi JOIN DALAM.

Penyelesaian:

Untuk membetulkan masalah, predikat yang menapis jadual yang betul (p.appId = 101) perlu dialihkan daripada klausa WHERE kepada syarat ON pernyataan LEFT JOIN. Ini memaksa cantuman untuk menapis jadual yang betul sebelum melakukan cantuman, memastikan bahawa hanya baris yang sepadan disertakan.

Pernyataan SQL yang dilaraskan adalah seperti berikut:

Select  P.appId, S.stepId, S.section, P.start
From    #appSteps    S   With (NoLock)
Left Join #appProgress P   On  S.stepId = P.stepId 
                           And P.appId = 101
Where   S.section Is Not Null
Salin selepas log masuk

Dengan melaraskan pertanyaan kepada menggunakan fungsi LEFT JOIN dengan betul, ia akan menghasilkan hasil yang diharapkan, termasuk semua baris bukan nol daripada #appSteps dan memadankan baris daripada #appProgress, tanpa mengecualikan baris secara tidak sengaja disebabkan oleh predikat tambahan dalam klausa WHERE.

Atas ialah kandungan terperinci Mengapa saya LEFT JOIN dalam SQL Mengembalikan Keputusan Tidak Dijangka?. 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