Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/67.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
SQL查询的顺序正确_Sql_Oracle_Sql Order By - Fatal编程技术网

SQL查询的顺序正确

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

我需要从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名称和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"