JOIN 连表查询
连表查询,将一个表与另外一个甚至多个表进行连接查询。
比如查询员工的部门信息,temp里面只有部门编号,但是没有部门名称,部门编号和名称对应关系存在于t_dept中,所以需要将temp 和 t_dept联在一起进行查询
# 查询每名员工的部门信息
SELECT
e.empno, e.ename, d.dname
FROM t_emp e JOIN t_dept d ON e.deptno=d.deptno;
# 也可以把 ON 换成 WHERE, 但是不推荐, 容易引起混淆
SELECT
e.empno, e.ename, d.dname
FROM t_emp e JOIN t_dept d WHERE e.deptno=d.deptno;也可以将一个表和多个表进行联合查询
#查询每个员工的工号 姓名 部门名称 底薪 工资等级
SELECT
e.empno, e.ename, d.dname, e.sal, s.grade
FROM t_emp e JOIN t_dept d ON e.deptno=d.deptno
JOIN t_salgrade s ON e.sal BETWEEN s.losal AND s.hisa一个表也可以自己和自己JOIN
# 查询和SCOTT相同部门的人
SELECT
ename
FROM t_emp WHERE deptno=
(SELECT deptno FROM t_emp WHERE ename="SCOTT")
AND ename!="SCOTT";
# 上面这种写法需要重复执行(SELECT deptno FROM t_emp WHERE ename="SCOTT")效率低下
# 可以用连表查询, 表自己和自己连接
SELECT
E2.ename
FROM t_emp E1 JOIN t_emp e2 ON e1.deptno=e2.deptno
WHERE e1.ename="SCOTT" AND e2.ename!="SCOTT";
做几个练习:
Last updated
Was this helpful?