SQL查询的顺序正确
我需要从emp表中查询数据以获得以下结果:SQL查询的顺序正确,sql,oracle,sql-order-by,Sql,Oracle,Sql Order By,我需要从emp表中查询数据以获得以下结果: Dept No Emp no Emp Name Mgr Name --------------------------------------------------- 10 7782 CLARK KING 10 7934 MILLER CLARK 20 7902 FORD
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名称和Mgr名称列的显示顺序与示例不匹配:
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名称和Mgr名称在您的预期结果中都是无序的,因此不必费心对它们进行排序。您需要回到设置分配的人那里,让他们定义控制排序顺序的规则。因为您发布的结果集似乎是使用deptno
随机排序的,所以我们无法提供比您现有的更好的解决方案。
ORDER BY "Dept No", "Emp Name", "Mgr Name"