select a.id,a.name,b.dept_id from emp_dept b left join emp a on (a.id=b.emp_id); mysql> select a.id,a.name,b.dept_id -> from emp_dept b left join emp a on (a.id=b.emp_id); +------+----------+---------+ | id | name | dept_id | +------+----------+---------+ | 2 | Dennis-2 | DEv | | 1 | Dennis-1 | R&D | | 3 | Dennis-3 | R&D | | 4 | Dennis-4 | Test | | 5 | Dennis-5 | Test | +------+----------+---------+
>> right join --------------- select a.id,a.name,b.dept_id from emp a right join emp_dept b on (a.id=b.emp_id); # 挑資料時以右邊 table emp_dept 中的資料為基礎來顯示資料
mysql> select a.id,a.name,b.dept_id -> from emp a right join emp_dept b on (a.id=b.emp_id); +------+----------+---------+ | id | name | dept_id | +------+----------+---------+ | 2 | Dennis-2 | DEv | | 1 | Dennis-1 | R&D | | 3 | Dennis-3 | R&D | | 4 | Dennis-4 | Test | | 5 | Dennis-5 | Test | +------+----------+---------+ 5 rows in set (0.00 sec)
# 我們再把 table 的位置交換一下,再用 right join 試試
select a.id,a.name,b.dept_id from emp_dept b right join emp a on (a.id=b.emp_id);
mysql> select a.id,a.name,b.dept_id -> from emp_dept b right join emp a on (a.id=b.emp_id); +----+-----------+---------+ | id | name | dept_id | +----+-----------+---------+ | 1 | Dennis-1 | R&D | | 2 | Dennis-2 | DEv | | 3 | Dennis-3 | R&D | | 4 | Dennis-4 | Test | | 5 | Dennis-5 | Test | | 6 | Dennis-6 | NULL | | 7 | Dennis-7 | NULL | | 8 | Dennis-8 | NULL | | 9 | Dennis-9 | NULL | | 10 | Dennis-10 | NULL | +----+-----------+---------+
# 是不是和 left join 一樣了?
>> direct join -------------- # 如果用right join 同不用 Join 直接挑資料是相同的,它等介於以下的指令
select a.id,a.name,b.dept_id from emp a ,emp_dept b where a.id=b.emp_id;
mysql> select a.id,a.name,b.dept_id -> from emp a ,emp_dept b -> where a.id=b.emp_id; +----+----------+---------+ | id | name | dept_id | +----+----------+---------+ | 2 | Dennis-2 | DEv | | 1 | Dennis-1 | R&D | | 3 | Dennis-3 | R&D | | 4 | Dennis-4 | Test | | 5 | Dennis-5 | Test | +----+----------+---------+