共通テーブル式 (CTE) はどのような場合に必要ですか?
すべてのシナリオでは派生テーブルで十分であるように見えますが、共通テーブル式 ( CTE) は、特定の状況下で明確な利点を提供します。
の制限事項派生テーブルと一時テーブル
データを複数回結合する必要があるシナリオを考えてみましょう。通常の SELECT ステートメントまたは派生テーブルを使用すると、インスタンスごとに結合構文が複製されることになり、コードの冗長性が高まります。ただし、CTE を使用すると、クエリ内で複数回参照できる再利用可能なテーブルを定義できます。
例
「Customers」テーブルがあり、次のことを行うとします。複数の注文をした顧客を検索します。
を使用するCTE:
WITH CustomerOrders AS ( SELECT CustomerID, COUNT(*) AS OrderCount FROM Orders GROUP BY CustomerID ) SELECT * FROM Customers JOIN CustomerOrders ON Customers.CustomerID = CustomerOrders.CustomerID WHERE OrderCount > 1;
派生テーブルの使用:
(SELECT CustomerID, COUNT(*) AS OrderCount FROM Orders GROUP BY CustomerID) AS CustomerOrders SELECT * FROM Customers JOIN CustomerOrders ON Customers.CustomerID = CustomerOrders.CustomerID WHERE OrderCount > 1;
ご覧のとおり、CTE アプローチでは、派生テーブルのエイリアスを定義する必要がありません。 ("CustomerOrders") を 2 回。
その他の CTE利点
再利用性とは別に、CTE には追加の利点があります。
以上が派生テーブルの代わりに共通テーブル式 (CTE) を使用する必要があるのはどのような場合ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。