涉及到条件不匹配补空值的问题举个例子 SQL> select * FROM a; ID VALUE ---------- ---------- 1 100 2 200 4 400 5 500SQL> select * FROM b; ID VALUE ---------- ---------- 1 100 2 1000 3 500 5 100 6 600SQL> select a.*,b.value from a left join b on a.id=b.id; ID VALUE VALUE ---------- ---------- ---------- 1 100 100 2 200 1000 5 500 100 4 400 SQL> select a.*,b.value from a join b on a.id=b.id; ID VALUE VALUE ---------- ---------- ---------- 1 100 100 2 200 1000 5 500 100SQL> 你可以查看Oracle的链接这一块,左右链接,内连接,自连接。。
select A.*,B.NAME from a1 A,b1 B where (A.ID = B.ID) 等效于“内连接” select A.*,B.NAME from a1 A inner join b2 B ON (A.ID = B.ID)左连接与内连接的区别上面都讲了,不再赘述
联合查询,可以视作join,左表和右表都均满足条件才会输出
如上例的左查询,由于没有where条件过滤,那么将输出A表全部记录,B表无对应记录的为NULL
SQL> select * FROM a; ID VALUE
---------- ----------
1 100
2 200
4 400
5 500SQL> select * FROM b; ID VALUE
---------- ----------
1 100
2 1000
3 500
5 100
6 600SQL> select a.*,b.value from a left join b on a.id=b.id; ID VALUE VALUE
---------- ---------- ----------
1 100 100
2 200 1000
5 500 100
4 400 SQL> select a.*,b.value from a join b on a.id=b.id; ID VALUE VALUE
---------- ---------- ----------
1 100 100
2 200 1000
5 500 100SQL> 你可以查看Oracle的链接这一块,左右链接,内连接,自连接。。
等效于“内连接”
select A.*,B.NAME from a1 A inner join b2 B ON (A.ID = B.ID)左连接与内连接的区别上面都讲了,不再赘述