这个为什么报错 ora-00923:SELECT d.deptno AS 部门号, COUNT(*) AS 工资大于2000的员工数 FROM emp e JOIN dept d ON e.deptno = d.deptno WHERE e.sal > 2000 GROUP BY d.deptno ORDER BY COUNT(*) DESC LIMIT 1;
时间: 2023-06-23 12:08:23 浏览: 134
这个报错是因为在 Oracle 数据库中并不支持使用 LIMIT 语句进行限制返回条数。如果你想要限制返回条数,可以使用 Oracle 提供的 ROWNUM 语句来实现,例如:
```
SELECT *
FROM (
SELECT d.deptno AS 部门号, COUNT(*) AS 工资大于2000的员工数
FROM emp e JOIN dept d ON e.deptno = d.deptno
WHERE e.sal > 2000
GROUP BY d.deptno
ORDER BY COUNT(*) DESC
)
WHERE ROWNUM <= 1;
```
这样就可以限制返回结果为一条记录。
相关问题
这个为什么报错 ora-00923:SELECT d.deptno AS 部门号, COUNT() AS 工资大于2000的员工数 FROM emp e JOIN dept d ON e.deptno = d.deptno WHERE e.sal > 2000 GROUP BY d.deptno ORDER BY COUNT() DESC;
ORA-00923 错误一般是因为 SQL 语句语法错误导致的。根据你提供的 SQL 语句,似乎是因为 COUNT() 函数的参数不正确导致的。
COUNT() 函数需要指定它要统计的列,例如 COUNT(e.empno) 表示统计 empno 这一列非空的行数。在你的 SQL 语句中,COUNT() 函数缺少了参数,应该改为 COUNT(*),表示统计所有行的个数。
正确的 SQL 语句应该是这样的:
SELECT d.deptno AS 部门号, COUNT(*) AS 工资大于2000的员工数
FROM emp e JOIN dept d ON e.deptno = d.deptno
WHERE e.sal > 2000
GROUP BY d.deptno
ORDER BY COUNT(*) DESC;
阅读全文