257

WITH条項の使い方と目的を理解しようとしていましたWITH

私が理解したのは、このWITH句は通常のサブクエリの代わりであるということだけでした。

誰かがこれを小さな例で詳しく説明できますか?

4

2 に答える 2

326

SQL WITH 句は、Oracle 9i リリース 2 データベースで Oracle によって導入されました。SQL WITH 句を使用すると、サブクエリ ブロックに名前を付けることができ (サブクエリ リファクタリングとも呼ばれるプロセス)、メイン SQL クエリ内のいくつかの場所で参照できます。サブクエリに割り当てられた名前は、インライン ビューまたはテーブルであるかのように扱われます。SQL WITH 句は基本的に、通常のサブクエリのドロップイン置換です。

SQL WITH 句の構文

以下は、単一のサブクエリ エイリアスを使用する場合の SQL WITH 句の構文です。

WITH <alias_name> AS (sql_subquery_statement)
SELECT column_list FROM <alias_name>[,table_name]
[WHERE <join_condition>]

複数のサブクエリ エイリアスを使用する場合の構文は次のとおりです。

WITH <alias_name_A> AS (sql_subquery_statement),
<alias_name_B> AS(sql_subquery_statement_from_alias_name_A
or sql_subquery_statement )
SELECT <column_list>
FROM <alias_name_A>, <alias_name_B> [,table_names]
[WHERE <join_condition>]

上記の構文ドキュメントでは、の出現はalias_nameAS 句の後にサブクエリに付ける意味のある名前です。各サブクエリは、コンマExample for WITH statementで区切る必要があります。残りのクエリは、単純および複雑な SQL SELECT クエリの標準形式に従います。

詳細情報: http://www.brighthub.com/internet/web-development/articles/91893.aspx

于 2012-09-23T12:20:01.933 に答える
111

これはここで完全に回答されています。

SELECT に関する Oracle のドキュメントを参照して、サブクエリのファクタリングがどのように機能するかを確認し、Mark の例を参照してください。

WITH employee AS (SELECT * FROM Employees)
SELECT * FROM employee WHERE ID < 20
UNION ALL
SELECT * FROM employee WHERE Sex = 'M'
于 2012-09-23T12:23:26.543 に答える