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

Mengapakah T-SQL LEFT JOIN saya Mengembalikan Barisan Lebih Sedikit Daripada Jangkaan?

Mary-Kate Olsen
Lepaskan: 2025-01-04 00:32:40
asal
974 orang telah melayarinya

Why is my T-SQL LEFT JOIN Returning Fewer Rows Than Expected?

Mengapa T-SQL Left Join Anda Tidak Menghasilkan Hasil Yang Dijangkakan?

Dalam pertanyaan SQL yang disediakan, walaupun menggunakan LEFT JOIN antara dua jadual (#appSteps dan #appProgress), hanya dua baris dikembalikan dan bukannya tiga yang dijangkakan. Untuk mengenal pasti punca tingkah laku yang tidak dijangka ini, mari kita analisis pertanyaan dan komponennya.

Operasi LEFT JOIN bertujuan untuk mengembalikan semua baris dari jadual kiri (#appSteps), walaupun mereka tidak mempunyai padanan yang sepadan dalam jadual yang betul (#appProgress). Walau bagaimanapun, pertanyaan termasuk syarat dalam klausa WHERE yang menapis baris NULL daripada #appSteps:

where s.section is not null
Salin selepas log masuk

Syarat ini secara tidak sengaja mengehadkan keputusan yang ditetapkan kepada baris yang #appSteps.section bukan NULL, dengan berkesan menukar JOIN KIRI kepada JOIN DALAM. Baris dengan nilai NULL dalam #appSteps.section dikecualikan, mengakibatkan ketiadaan baris ketiga yang dijangkakan.

Untuk membetulkan isu ini, syarat harus dialihkan ke keadaan ON pada LEFT JOIN:

Left Join #appProgress P   On  S.stepId = P.stepId 
                           And P.appId = 101
Salin selepas log masuk

Dengan menyatakan syarat dalam klausa ON, ia menjadi sebahagian daripada kriteria gabungan, memastikan bahawa hanya baris yang sepadan daripada #appSteps diambil daripada #appProgress. Akibatnya, LEFT JOIN masih akan mendapatkan semula semua baris daripada #appSteps, termasuk yang mempunyai nilai NULL, tidak kira sama ada ia sepadan dengan #appProgress.

Dengan menggunakan pendekatan ini, pertanyaan akan mengembalikan tiga baris yang dikehendaki, seperti asalnya dimaksudkan.

Atas ialah kandungan terperinci Mengapakah 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