gpt4 book ai didi

c# - 各个 UNION 语句中不允许使用的子句

转载 作者:行者123 更新时间:2023-12-02 07:11:34 29 4
gpt4 key购买 nike

我正在用 C# 和 Java 编写查询生成器,并且担心生成 UNION 语句。我知道 UNION 子句中的每个单独语句不能包含 ORDER BY 子句,而必须将其放在完整 union 语句的末尾。还有其他我应该注意的情况吗?即通常适用于单个 select 语句的条件,但是当放入 UNION 语句中时会导致问题?据我所知,每个单独的语句都可以包含 GROUP BY、WHERE 和 HAVING。我错过了什么吗?

最佳答案

根据SQL syntax specification ,返回多行的 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>

因此,在 UNION ALL 子句中的单个查询表达式中使用 ORDER BY 在语法上是不正确的;没有其他类似的查询子句不能在 UNION 中使用。

关于c# - 各个 UNION 语句中不允许使用的子句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15448640/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com