以下查询有什么问题?

时间:2013-01-15 14:06:21

标签: sql oracle tsql

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

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

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

但它没有用。

我哪里错了?

5 个答案:

答案 0 :(得分:3)

要做的事情,

  • 使用WHERE在与汇总条件比较时使用
  • 删除额外的括号,

例如

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

答案 1 :(得分:3)

两个错误:

  • 使用WHERE代替HAVING
  • 删除额外的括号。

试试这个:

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

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

答案 2 :(得分:1)

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

您可以在使用分组的地方应用having子句,此处没有分组,只需使用where

The HAVING Clause

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

答案 3 :(得分:0)

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

答案 4 :(得分:0)

使用Oracle中的正确方法:

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
/