Rumah > pangkalan data > tutorial mysql > Mengapa T-SQL LEFT JOIN saya hanya mengembalikan dua baris dan bukannya tiga?

Mengapa T-SQL LEFT JOIN saya hanya mengembalikan dua baris dan bukannya tiga?

Mary-Kate Olsen
Lepaskan: 2025-01-06 00:55:39
asal
957 orang telah melayarinya

Why is my T-SQL LEFT JOIN only returning two rows instead of three?

Kiri Sertai Tidak Menghasilkan Hasil Yang Dijangka

Kod T-SQL yang disediakan bertujuan untuk melakukan gabungan kiri antara dua jadual, #appSteps dan #appProgress, tetapi keputusan ditetapkan mengandungi hanya dua baris dan bukannya yang dijangkakan tiga.

Isu

Isu timbul kerana jadual sebelah kanan (#appProgress) disertakan dalam klausa WHERE:

where s.section is not null
and p.appId = 101
Salin selepas log masuk

Penjelasan

SERTAI KIRI bertujuan untuk mengembalikan semua baris dari jadual kiri, termasuk yang tidak sepadan dengan rekod dalam jadual kanan. Walau bagaimanapun, dengan memasukkan jadual sebelah kanan dalam klausa WHERE, pertanyaan berfungsi dengan berkesan seperti INNER JOIN, menapis keluar baris dari jadual kiri tanpa sepadan dengan rekod dalam jadual kanan.

Penyelesaian

Untuk mendapatkan set hasil yang diingini, alihkan keadaan penapis untuk jadual sebelah kanan ke klausa HIDUP KIRI SERTAI:

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 meletakkan syarat dalam klausa ON, baris yang sepadan daripada kedua-dua jadual dicantumkan dahulu, dan kemudian klausa WHERE digunakan untuk menapis keputusan selanjutnya, memastikan bahawa hanya baris dengan bukan nol nilai untuk bahagian dikembalikan.

Atas ialah kandungan terperinci Mengapa T-SQL LEFT JOIN saya hanya mengembalikan dua baris dan bukannya tiga?. 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