一、非等值连接
表与表之间没有相同项(或有相同但是不能用),但是表之间某个或某些项直接存在着一定的关系。
比如说员工信息表,里面包含员工工资,另外一张工资等级表将工资进行等级划分,而员工的工资就可以根据工资等级表来划分为某个等级。
#查询员工工资和工资等级
SELECT e.last_name 员工名, e.salary 员工工资, g.grade_level 工资等级
FROM
employees e, jop_grades g
WHERE
e.`salary` BETWEEN g.`lowest_sal` AND g.`highest_sal`;
也可以按如下所示写:
SELECT e.last_name 员工名, e.salary 员工工资, g.grade_level 工资等级
FROM
employees e, jop_grades g
WHERE
e.`salary` >= g.`lowest_sal`
AND
e.`salary` <=g.`highest_sal`;
输出结果:
二、自连接
自连接相当于等值连接,不同是等值连接的项在不同的表单当中,而自连接的连接项在同一个表单中。单一表单中某项和另外一项存在着关联关系。
比如说员工信息表中,普通员工A的领导是B,而B本身也是员工,因此也包含着员工信息表中。所以A的manager_id就是B的employee_id
#列出员工的名字和他的领导名字
SELECT e.last_name 员工名字, m.last_name 员工领导名字
FROM
employees e, employees m
WHERE
e.`manager_id` = m.`employee_id`;
输出结果: