0

私は C# と Java の両方でクエリ ビルダーを作成しており、UNION ステートメントの生成について懸念しています。UNION 句の個々のステートメントに ORDER BY 句を含めることはできません。代わりに、完全な UNION ステートメントの最後に配置する必要があります。他に注意すべき条件はありますか?つまり、通常は単一の選択ステートメントに適用される条件ですが、UNIONステートメントに配置すると問題が発生しますか? 私が知る限り、個々のステートメントには GROUP BY、WHERE、および HAVING を含めることができます。私は何かを逃しましたか?

4

1 に答える 1

2

SQL 構文の仕様によると、複数の行を返す select ステートメントは、クエリ式の後にオプションのORDER BY句が続きます。

<direct_select_statement:multiple_rows> ::=
    <query_expression> [ <order_by_clause> ]

次に、クエリ式は次のように定義されます

<query_expression> ::= <non-join_query_expression> | <joined_table>

非結合クエリ式は、UNIONが指定されている場所です。

<non-join_query_expression>    ::= 
     <non-join_query_term>
 |     <query_expression> UNION [ ALL ] [ <corresponding_spec> ] <query_term>
 |     <query_expression> EXCEPT [ ALL ] [ <corresponding_spec> ] <query_term>

したがって、句ORDER BY内の個々のクエリ式で使用するUNION ALLことは、構文的に正しくありません。で使用してはならない同様のクエリ句は他にありませんUNION

于 2013-03-16T11:41:19.953 に答える