您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

别名在何处与具有之间的区别

别名在何处与具有之间的区别

基本上是因为它们是出于不同目的而定义的。该WHERE子句用于记录过滤,该HAVING子句设计用于通过 (GROUP BY)进行过滤。在第二个查询中,GROUP BY正在使用隐式过滤,因此,例如,如果将另一列添加SELECT子句中,最终将得到不同的结果。

基于马丁·史密斯(Martin Smith)的更正

HAVING创建允许过滤产生的行GROUP BY。如果未GROUP BY指定no ,则将整个结果视为一个组。

如果既未指定a<where clause>也未<group by clause>指定a,则令T为前一个的结果<from clause>

或者

…如果未<group by clause>指定,则该组为整个表格

现在关于ALIAS:

有关搜索条件中列引用的WHERE子句的规范说:

<column reference>直接包含在中的每个<search condition>应明确引用T 或作为外部引用。

请参阅:7.6<where clause>,语法规则1。

有关搜索条件中列引用的HAVING子句的规范说:

<column reference>直接包含在中的 每个<search condition>应明确引用T 或作为外部引用。

请参阅:7.8<having clause>,语法规则1。

和 被定义为:

在a中引用的列<group by clause>是分组列。

因此,总而言之,WHERE必须引用表的一列,而HAVING子句必须引用行组的分组列。

(第二次非正式审核草案)ISO / IEC 9075:1992,数据库语言SQL- 1992年7月30日

其他 2022/1/1 18:37:29 有349人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶