1

我在oracle数据库上写了这个查询。

Select salary from emp having salary < (SELECT MAX(SALARY) FROM EMP ));

http://sqlfiddle.com/#!4/47961/13

但它不起作用。

我哪里错了?

4

5 回答 5

3

要做的事情,

  • 使用WHERE与聚合条件比较时使用具有
  • 去掉多余的括号,

例如。

Select salary 
FROM emp 
WHERE salary < (SELECT MAX(SALARY) FROM EMP );
于 2013-01-15T14:07:32.697 回答
3

两个错误:

  • 使用WHERE而不是HAVING.
  • 去掉多余的括号。

尝试这个:

SELECT salary
FROM emp
WHERE salary < (SELECT MAX(salary) FROM emp);

http://sqlfiddle.com/#!4/47961/17

于 2013-01-15T14:07:43.067 回答
1
Select salary from emp where salary < (SELECT MAX(SALARY) FROM EMP ));

您可以having在使用 group by 的地方应用子句,这里没有 group by 而只是使用where

HAVING 条款

HAVING 子句被添加到 SQL 中,因为 WHERE 关键字不能与聚合函数一起使用。

于 2013-01-15T14:07:59.947 回答
0
Select salary from emp WHERE SALARY < (SELECT MAX(SALARY) FROM EMP );
于 2013-01-15T14:09:00.823 回答
0

在 Oracle 中使用 Have 的正确方法:

SELECT sal FROM scott.emp
 GROUP BY sal
HAVING sal < (SELECT MAX(SAL) FROM scott.EMP)

/
SELECT deptno, COUNT(*) total_emps_by_dept
  FROM scott.emp
GROUP BY deptno
HAVING COUNT(*) > 1
/
于 2013-01-15T15:03:19.923 回答