我在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] 删除。
我来说两句