Rumah > pangkalan data > tutorial mysql > Mengapa T-SQL LEFT JOIN Saya Mengembalikan Barisan Lebih Sedikit Daripada Jangkaan?

Mengapa T-SQL LEFT JOIN Saya Mengembalikan Barisan Lebih Sedikit Daripada Jangkaan?

Mary-Kate Olsen
Lepaskan: 2025-01-04 02:36:40
asal
275 orang telah melayarinya

Why Does My T-SQL LEFT JOIN Return Fewer Rows Than Expected?

T-SQL Left Join Tidak Memberikan Hasil Yang Dijangka

Dalam siasatan ini, operasi LEFT JOIN antara dua jadual, #appSteps dan #appProgress , tidak mengembalikan set hasil yang diingini. Set hasil yang dimaksudkan mengandungi tiga baris, tetapi hasil sebenar hanya mempunyai dua.

Pertanyaan SQL yang disediakan 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
where s.section is not null
and p.appId = 101
Salin selepas log masuk

Isu ini berpunca daripada kemasukan sebelah kanan jadual (#appProgress) dalam klausa WHERE. Untuk membetulkan ini, syarat harus dialihkan ke keadaan ON bagi LEFT JOIN:

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

Pengubahsuaian ini memastikan klausa WHERE dinilai selepas LEFT JOIN, menghalang penapisan daripada hasil NULL daripada sertai. Dengan meletakkan syarat dalam klausa HIDUP, LEFT JOIN berfungsi dengan berkesan seperti yang dimaksudkan, mengembalikan semua baris daripada jadual sebelah kiri (#appSteps) dengan baris yang sepadan dalam jadual sebelah kanan (#appProgress) dan NULL untuk baris yang tidak sepadan.

Atas ialah kandungan terperinci Mengapa T-SQL LEFT JOIN Saya Mengembalikan Barisan Lebih Sedikit Daripada Jangkaan?. 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