首頁 > 資料庫 > mysql教程 > 左連接、右連接或內連接:我應該使用哪種 SQL 連接類型?

左連接、右連接或內連接:我應該使用哪種 SQL 連接類型?

Susan Sarandon
發布: 2024-12-28 22:36:12
原創
978 人瀏覽過

Left, Right, or Inner Join: Which SQL Join Type Should I Use?

確定適當的聯接類型:左、右或內

在資料操作操作中,在表之間選擇正確的聯結類型至關重要檢索所需的結果。左連接、右連接和內連接提供不同的行為,為特定情況選擇合適的連接可能具有挑戰性。讓我們澄清差異並幫助您確定要使用哪個聯接:

內部聯接

  • 返回在兩個聯接表中具有匹配值的行。
  • 排除兩個表中沒有匹配值的行。
  • 確保每一行

Left Join

  • 傳回左表中的所有行,無論是否有符合值在右表中。
  • 包含右表中的符合行(如果它們)
  • 如果右表中左表行沒有符合值,則右表列會傳回 NULL 值。

Right Join

  • 傳回右表中的所有行,無論左表中是否有符合的值表。
  • 包含左表中的符合行(如果存在)。
  • 如果左表中沒有右表行的符合值,則為左表列傳回NULL 值.

範例

考慮範例查詢提供:

SELECT  count(ImageId) as [IndividualRemaining],
        userMaster.empName AS ID#,
        CONVERT(DATETIME, folderDetails.folderName, 101) AS FolderDate,
        batchDetails.batchName AS Batch#,
        Client=@ClientName,
        TotalInloaded = IsNull(@TotalInloaded,0),
        PendingUnassigned = @PendingUnassigned,
        InloadedAssigned =     IsNull(@TotalAssigned,0),
        TotalProcessed = @TotalProcessed,
        Remaining = @Remaining
FROM
        batchDetails
            Left JOIN  folderDetails ON batchDetails.folderId = folderDetails.folderId
            Left JOIN  imageDetails ON batchDetails.batchId = imageDetails.batchId
            Left JOIN  userMaster ON imageDetails.assignedToUser = userMaster.userId
WHERE   folderDetails.ClientId =@ClientID and verifyflag='n'
        and folderDetails.FolderName IN (SELECT convert(VARCHAR,Value) FROM dbo.Split(@Output,','))
        and userMaster.empName <> 'unused'
GROUP BY userMaster.empName, folderDetails.folderName, batchDetails.batchName
Order BY folderDetails.Foldername asc
登入後複製

在此查詢中,batchDetails 和folderDetails之間使用左聯接,batchDetails 和imageDetails 之間也使用左聯接。這表示我們想要傳回batchDetails 中的所有行,即使folderDetails 或imageDetails 中沒有符合的行。如果可用,將包含來自folderDetails和imageDetails的符合行,否則將傳回NULL值。

以上是左連接、右連接或內連接:我應該使用哪種 SQL 連接類型?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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