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