Rumah > pangkalan data > tutorial mysql > Mengapa Baris Tiada daripada Keputusan Sertai Kiri saya?

Mengapa Baris Tiada daripada Keputusan Sertai Kiri saya?

Barbara Streisand
Lepaskan: 2025-01-04 09:33:35
asal
407 orang telah melayarinya

Why are Rows Missing from my Left Join Result?

Percanggahan Sertai Kiri: Baris Ditinggalkan

Dalam pertanyaan ini, JOIN KIRI antara jadual #appSteps dan #appProgress tidak berfungsi, mengakibatkan pengecualian baris yang dijangkakan daripada hasilnya ditetapkan.

Pertanyaan dalam Soalan:

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

Hasil Jangkaan:

appId stepId section start
101 1 Section 1 2016-01-03 00:00:00.000
101 2 Section 2 2016-01-03 00:00:00.000
101 10 Section 3 NULL

Sebenar Keputusan:

appId stepId section start
101 1 Section 1 2016-01-03 00:00:00.000
101 2 Section 2 2016-01-03 00:00:00.000

Penyelesaian:

Tingkah laku yang salah timbul daripada memasukkan jadual sebelah kanan (#appProgress) dalam klausa WHERE. Dengan mengalihkan syarat ini ke klausa ON LEFT JOIN, hasil yang diingini boleh dicapai:

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

Dalam LEFT JOIN, klausa WHERE dilaksanakan selepas cantuman, bermakna baris dari kanan- jadual tangan yang tidak memenuhi kriteria klausa WHERE akan dikecualikan daripada set hasil. Memasukkan jadual sebelah kanan dalam klausa WHERE dengan berkesan mengubahnya menjadi JOIN DALAM, menapis hasil yang dijangkakan.

Atas ialah kandungan terperinci Mengapa Baris Tiada daripada Keputusan Sertai Kiri saya?. 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