首頁 > 資料庫 > mysql教程 > 為什麼我的 T-SQL LEFT JOIN 回傳的行數少於預期?

為什麼我的 T-SQL LEFT JOIN 回傳的行數少於預期?

Mary-Kate Olsen
發布: 2025-01-04 02:36:40
原創
278 人瀏覽過

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

T-SQL Left Join 未產生預期結果

在此查詢中,#appSteps 與#appProgress 兩個表之間的LEFT JOIN 操作,沒有傳回所需的結果集。預期結果集包含三行,但實際結果只有兩行。

提供的 SQL 查詢如下:

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
登入後複製

問題源自於包含右側WHERE 子句中的資料表 (#appProgress)。若要修正此問題,條件應移至 LEFT JOIN 的 ON 條件:

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
登入後複製

此修改可確保在 LEFT JOIN 之後計算 WHERE 子句,從而防止從 LEFT JOIN 中過濾出 NULL 結果加入。透過將條件放在 ON 子句中,LEFT JOIN 可以有效地按預期運行,返回左表 (#appSteps) 中的所有行以及右表 (#appProgress) 中的匹配行,以及不匹配行的 NULL。

以上是為什麼我的 T-SQL LEFT JOIN 回傳的行數少於預期?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板