


Mengapa T-SQL LEFT JOIN saya hanya mengembalikan dua baris dan bukannya tiga?
Jan 06, 2025 am 12:55 AMKiri 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
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
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!

Artikel Panas

Alat panas Tag

Artikel Panas

Tag artikel panas

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6
Alat pembangunan web visual

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas

Kurangkan penggunaan memori MySQL di Docker

Bagaimana anda mengubah jadual di MySQL menggunakan pernyataan Alter Table?

Cara menyelesaikan masalah MySQL tidak dapat membuka perpustakaan bersama

Apa itu SQLite? Gambaran Keseluruhan Komprehensif

Jalankan MySQL di Linux (dengan/tanpa bekas podman dengan phpmyadmin)

Menjalankan Pelbagai Versi MySQL di MacOS: Panduan Langkah demi Langkah

Bagaimanakah saya menjamin MySQL terhadap kelemahan biasa (suntikan SQL, serangan kekerasan)?

Apakah beberapa alat GUI MySQL yang popular (mis., MySQL Workbench, phpmyadmin)?
