ホームページ >データベース >mysql チュートリアル >左結合、右結合、または内部結合: どの SQL 結合タイプを使用する必要がありますか?

左結合、右結合、または内部結合: どの SQL 結合タイプを使用する必要がありますか?

Susan Sarandon
Susan Sarandonオリジナル
2024-12-28 22:36:12972ブラウズ

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

適切な結合タイプの決定: 左、右、または内部

データ操作操作では、テーブル間の正しい結合タイプを選択することが重要です目的の結果を取得します。左結合、右結合、および内部結合は異なる動作を提供するため、特定の状況に適切なものを選択するのは困難な場合があります。違いを明確にし、どの結合を使用するかを決定するのに役立てましょう。

内部結合

  • 結合された両方のテーブルで一致する値を持つ行を返します。
  • 両方のテーブルに一致する値がない行を除外します。
  • 次のことを保証します。両方のテーブルのすべての行が結果で表されます。

Left Join

  • 左側のテーブルの行が存在するかどうかに関係なく、すべての行を返します。右側のテーブルの一致する値。
  • 右側のテーブルの一致する行が含まれる場合、それらの行が含まれます。
  • 右のテーブルに左のテーブルの行に一致する値がない場合は、右のテーブルの列に NULL 値を返します。

右結合

  • 左側に一致する値があるかどうかに関係なく、右側のテーブルからすべての行を返します。 table.
  • 左側のテーブルに一致する行が存在する場合はその行が含まれます。
  • 左側のテーブルに右側のテーブルの行に一致する値がない場合は、左側のテーブルの列に 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 の間でも左結合が使用されます。これは、folderDetails または imageDetails に一致する行がない場合でも、batchDetails からすべての行を返したいことを示します。利用可能な場合は、folderDetails と imageDetails の一致する行が含まれます。そうでない場合は、NULL 値が返されます。

以上が左結合、右結合、または内部結合: どの SQL 結合タイプを使用する必要がありますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。