【发布时间】:2013-12-22 19:27:54
【问题描述】:
我试图在 Oracle 10g 中执行以下查询,印象是我们可以在 ORDER BY 子句中指定不在 SELECT 列表中的列。
select d.DEPARTMENT_ID, count(e.EMPLOYEE_ID)
from departments d, Employees e
where d.DEPARTMENT_ID = e.DEPARTMENT_ID
group by d.DEPARTMENT_ID
order by d.DEPARTMENT_ID, e.EMPLOYEE_ID;
但是当我尝试执行上述查询时,我收到以下错误。
[Error] Execution (1: 169): ORA-00979: not a GROUP BY expression
当我从 ORDER BY 中删除 e.EMPLOYEE_ID 时,查询执行良好。
请帮助我找出上述查询中的问题。提前感谢任何帮助。
【问题讨论】:
-
查询似乎得到了每个部门的员工总数,为什么需要通过
e.employee_id订购它,因为结果将只包含一个部门的员工总数,没有关于特定部门的信息员工左右 -
是的,Akash 你是对的。我们不需要使用employee_id 进行排序,但我试图找出在ORDER BY 子句中指定的列的限制。因为我们可以从指定的表中指定任何列,即使它不在选择列表中。何时需要允许 order by 子句中不在选择列表中的列?请建议任何资源来解释 Oracle SQL 查询执行顺序逐步处理表数据。谢谢。
标签: sql oracle oracle10g sql-order-by