oracle sql嵌套select在select中

时间:2016-01-28 16:18:01

标签: sql oracle

SELECT idemployee, lastname, firstname,
(SELECT namedep FROM department
WHERE numdep = 120) depname
FROM employee
WHERE numdep = 120;

该声明的回报是什么? 嵌套选择如何影响结果?

2 个答案:

答案 0 :(得分:1)

这称为相关子查询。它通常被写为显式连接:

SELECT e.idemployee, e.lastname, e.firstname, d.namedep
FROM employee e left join
     department d
     on e.numdep = d.numdep
WHERE e.numdep = 120;

这两种配方并不完全相同,但在这种情况下,它们可能会返回相同的结果。

答案 1 :(得分:0)

这是一个非常简单的查询。如果没有表格及其中的数据的示例,我们无法准确地告诉您查询将返回什么,但它应该是这样的。

idemployee |姓氏|名字| depname

1 |史密斯|约翰|卫生

2 | Doe |简|卫生

分解:SELECT namedep FROM department 在哪里numdep = 120似乎获得部门#120的部门名称。然后,这将显示在主查询的每一行的最后一列中。

SELECT idemployee,lastname,firstname FROM employee WHERE numdep = 120似乎只是为部门120中的每个人从员工表中选择员工ID,姓氏和名字。

你可以更简单地写这个

SELECT e.idemployee Employee_ID, e.lastname, e.firstname, d.namedep Department_name
FROM employee e inner join department d on e.numdep = d.numdep
WHERE d.numdep = 120

这将返回相同的结果。性能会更加安全。更改为不同部门,多个部门或所有部门运行也会更容易。

我只是根据公共列numdp将表连接在一起,并从表中选择了我想要的内容。我还添加了别名(e,d),所以我没有必要输入员工和部门来指定我指的是哪个表。