前几天面试被问到oracle数据库左连接和右连接的区别,so要记录一下咯
直接举例子:
现在有两个表:t1 和 t2
SQL> select * from t1;
ID NAME AGE
---------- -------------------- ----------
1 dasf 33
1 dasf 31
2 aaa 32
3 bbb 33
4 ccc 34
10 lop 45
11 vpp 95
18 werwe 65
SQL> select * from t2;
ID NAME AGE
---------- -------------------- ----------
1 eee 31
2 fff 32
3 ggg 33
4 hhh 34
5 www 35
6 ooo 36
现在我们写一个左连接(left outer join)返回包括左表中的所有记录和右表中联结字段相等的记录
SQL> select * from t1 left outer join t2 on (t1.id = t2.id);
ID NAME AGE ID NAME AGE
---------- -------------------- ---------- ---------- -------------------- ----------
1 dasf 31 1 eee 31
1 dasf 33 1 eee 31
2 aaa 32 2 fff 32
3 bbb 33 3 ggg 33
4 ccc 34 4 hhh 34
10 lop 45
11 vpp 95
18 werwe 65
可以看出:左表的记录将会全部表示出来,而右表只会显示符合搜索条件的记录
现在我们写一个右连接:right outer join(返回包括右表中的所有记录和左表中联结字段相等的记录)
SQL> select * from t1 right outer join t2 on (t1.id = t2.id);
ID NAME AGE ID NAME AGE
---------- ------------------- ---------- ---------- -------------------- ----------
1 dasf 33 1 eee 31
1 dasf 31 1 eee 31
2 aaa 32 2 fff 32
3 bbb 33 3 ggg 33
4 ccc 34 4 hhh 34
6 ooo 36
5 www 35
可以看出:右表的记录将会全部表示出来,而左表只会显示符合搜索条件的记录