按子查询排序
Order by subquery
我有以下 oracle SQL 代码,但我不明白子查询排序的目的是什么。谁能给我解释清楚?
SELECT employee_id, last_name
FROM employees e
ORDER BY (
SELECT department_name
FROM departments d
WHERE e.department_id = d.department_id
);
排序是根据其他 table 的结果进行的。在这种情况下,查询 returns 仅来自 employees
table,但排序是由 department_name
完成的,它存储在 departments
table 中.
您可以通过使用联接获得相同的结果,仅从 employees
table 中选择值,并按 department_name
从部门 table:
中排序
SELECT e.employee_id, e.last_name
FROM employees e INNER JOIN departments d
ON e.department_id = d.department_id
ORDER BY d.department_name
如果员工必须始终有一个部门,则此查询有效。如果可以有没有部门的员工,那么您应该使用 LEFT
加入。
该查询的明确意图是 employee_id,员工的 last_name 应该由部门的 department_name 订购。
好的,你不要子查询然后去加入
select e.employee_id,e.last_name from employees e join departments d on
e.department_id = d.department_id order by d.department_name;
我有以下 oracle SQL 代码,但我不明白子查询排序的目的是什么。谁能给我解释清楚?
SELECT employee_id, last_name
FROM employees e
ORDER BY (
SELECT department_name
FROM departments d
WHERE e.department_id = d.department_id
);
排序是根据其他 table 的结果进行的。在这种情况下,查询 returns 仅来自 employees
table,但排序是由 department_name
完成的,它存储在 departments
table 中.
您可以通过使用联接获得相同的结果,仅从 employees
table 中选择值,并按 department_name
从部门 table:
SELECT e.employee_id, e.last_name
FROM employees e INNER JOIN departments d
ON e.department_id = d.department_id
ORDER BY d.department_name
如果员工必须始终有一个部门,则此查询有效。如果可以有没有部门的员工,那么您应该使用 LEFT
加入。
该查询的明确意图是 employee_id,员工的 last_name 应该由部门的 department_name 订购。
好的,你不要子查询然后去加入
select e.employee_id,e.last_name from employees e join departments d on
e.department_id = d.department_id order by d.department_name;