SELECT的嵌套查询
由于上课没讲过这个,先自学一下
SELECT Eno, Ename, Title
FROM Employee
WHERE Eno In
( SELECT Eno
FROM Item_emp
WHERE Ino = '200901')
这里的WHERE…IN是嵌套查询的一种方式,子查询语句查询结果得到的是一个类似于IN对枚举内容进行检索的集合。
可以用NOT IN 或者 = 来对子查询的结果进行筛选
SELECT Enamel, Age
FROM Employee
WHERE Age >
( SELECT AVG(Age)
FROM Employee)
也可以加上ANY和ALL一起使用,ANY只要其中一个值符合即可,ALL需要子查询中的所有值符合
相关子查询
EXISTS
SELECT Eno , Ename
FROM Employee e
WHERE EXISTS
(SELECT *
FROM Item_Emp
Where Eno = e.Eno)
子查询返回逻辑值,结果非空就是True
其中,子查询的“目标列清单表达式”(也就是子查询SELECT后面的语句)无意义,一般用*即可
INSERT和子查询的结合
INSERT INTO Employee_01
SELECT *
FROM Employee
WHERE Dno = '01'
UPDATE Salary
SET Rest = Rest+200
WHERE Eno IN
(SELECT Eno
FROM Item_Emp
WHERE Ino = '200802')