SQL左結合、事前フィルターテーブルデータ
]を効率的に実行する複数のテーブルを処理するときは、通常、テーブルの1つを接合する前にフィルタリングする必要があります。この例には、顧客テーブルとエントリテーブルの2つのテーブルが含まれます。
目標は、これら2つのテーブル間で左結合を実行する前に、特定のカテゴリ「D」に基づいてエントリテーブルをフィルタリングすることです。予想される結果は次のとおりです。顧客テーブルのすべてのレコードは、エントリテーブルに関連するレコードがあるかどうかに関係なく取得されます。同時に、エントリテーブルのカテゴリ基準を満たさないレコードは除外されます。
次のSQLクエリはこれを達成する方法を示しています:
SELECT c.Customer, c.State, e.Entry
FROM Customer c
LEFT JOIN Entry e
ON c.Customer=e.Customer
AND e.Category='D'
ここでフィルター条件を結合条件に移動することにより、結合する前にカテゴリフィルターをエントリテーブルに適用できます。これにより、カテゴリの基準を満たすエントリレコードのみが接続結果に含まれます。
サンプルテーブル
]客户表 (Customer):
╔══════════╦═══════╗
║ Customer ║ State ║
╠══════════╬═══════╣
║ A ║ S ║
║ B ║ V ║
║ C ║ L ║
╚══════════╩═══════╝
条目表 (Entry):
╔══════════╦═══════╦══════════╗
║ Customer ║ Entry ║ Category ║
╠══════════╬═══════╬══════════╣
║ A ║ 5575 ║ D ║
║ A ║ 6532 ║ C ║
║ A ║ 3215 ║ D ║
║ A ║ 5645 ║ M ║
║ B ║ 3331 ║ A ║
║ B ║ 4445 ║ D ║
╚══════════╩═══════╩══════════╝
結果
╔══════════╦═══════╦═══════╗
║ Customer ║ State ║ Entry ║
╠══════════╬═══════╬═══════╣
║ A ║ S ║ 5575 ║
║ A ║ S ║ 3215 ║
║ B ║ V ║ 4445 ║
║ C ║ L ║ NULL ║
╚══════════╩═══════╩═══════╝
要約では、結合条件で句を使用することにより、結合する前にテーブルをフィルタリングして、指定された条件に基づいてデータがより正確に取得されるようにします。
免責事項: 提供されるすべてのリソースの一部はインターネットからのものです。お客様の著作権またはその他の権利および利益の侵害がある場合は、詳細な理由を説明し、著作権または権利および利益の証拠を提出して、電子メール [email protected] に送信してください。 できるだけ早く対応させていただきます。
Copyright© 2022 湘ICP备2022001581号-3