SELECT idemployee, lastname, firstname,
(SELECT namedep FROM department
WHERE numdep = 120) depname
FROM employee
WHERE numdep = 120;
该声明的回报是什么? 嵌套选择如何影响结果?
答案 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),所以我没有必要输入员工和部门来指定我指的是哪个表。