【发布时间】:2018-06-24 16:41:16
【问题描述】:
我需要从emp表中查询数据得到如下结果:
Dept No Emp no Emp Name Mgr Name
---------------------------------------------------
10 7782 CLARK KING
10 7934 MILLER CLARK
20 7902 FORD JONES
20 7369 SMITH FORD
20 7876 ADAMS SCOTT
20 7566 JONES KING
20 7788 SCOTT JONES
我的查询如下:
SELECT DISTINCT e.deptno AS "Dept No", e.empno AS "Emp No", e.ename AS "Emp Name", m.ename AS "Mgr Name"
FROM emp e, emp m
WHERE e.deptno IN (10,20) AND e.mgr = m.empno
ORDER BY "Dept No";
不幸的是,我的 Emp Name 和 Mgr Name 列没有按照与示例匹配的顺序显示:
Dept No Emp No Emp Name Mgr Name
---------------------------------------------------
10 7782 CLARK KING
10 7934 MILLER CLARK
20 7369 SMITH FORD
20 7566 JONES KING
20 7788 SCOTT JONES
20 7876 ADAMS SCOTT
20 7902 FORD JONES
如何对最后两列进行排序,以便它们按照我需要的顺序显示?
【问题讨论】:
-
顺序是如何确定的?
-
您需要在查询中指定您想要的顺序。
SELECT获得的默认订单不保证是特定的所需订单。从您的示例中不清楚是什么决定了您想要的顺序。按部门编号排序后,它似乎没有按任何其他属性排序。 -
今日提示:切换到现代、明确的
JOIN语法。更容易编写(没有错误),更容易阅读(和维护),并且在需要时更容易转换为外连接。 -
Emp name 和 Mgr name 在您的预期结果中都是无序的,所以不要费心去订购它们。
-
您需要回到设置您的任务的人那里,并要求他们定义管理排序顺序的规则。因为您发布的结果集似乎是用
deptno随机排序的,所以我们无法提供比您已有的更好的解决方案。
标签: sql oracle sql-order-by