在Oracle中的SQL查询中,带有HAVING子句的1和2是什么意思?

A_J

我在Oracle DBMS中创建了一个具有以下属性的雇员表:deptno和薪金。我执行了这个查询:

SELECT deptno, SUM(salary)

FROM emp
GROUP BY deptno
HAVING 1 > 2 ;

我认为1和2指的是SELECT语句中的“ deptno”和“ SUM(salary)”列。因此,我在表中的“ deptno”>“ SUM(salary)”中放入了一条记录,如下所示:

deptno          salary
1001            5000
1002            1000

输出为“未找到行”,我期望第二行作为输出。请解释原因。

无形的

1和2是一个数字。1 > 2始终返回false。HAVING 1 > 2意味着无论您的数据库中有多少行,它将始终不返回任何行。就像你在跑步while(false) { ... }

您可以在ORDER BY中使用1或2来指定要排序的列号。http://docs.oracle.com/javadb/10.6.2.1/ref/rrefsqlj13658.html),但不能使用HAVING。

附带说明一下,因为您可以在ORDER BY中使用列号,所以不应该使用它。这不是一个好习惯。假设您添加并删除了选择的列数。您要订购的字段的位置将被调整。最好通过名称或别名来指定它。其他开发人员阅读您的代码也更具可读性。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章