内连接(一种场景)
inner join 或者 join
例:
1 | SELECT a.*,b.* FROM a |
应用场景:
满足某一条件的A,B内部的数据,得到内部共有数据,相当于求交集。
外连接(六种场景)
场景一:
left join 或者left outer join
例:
1 | SELECT a.*,b.* FROM a |
应用场景:
得到的是A的所有数据和满足某一条件的B的数据。
场景二:
[left join] + [where b.column is null]
1 | SELECT a.id aid,a.age,b.id bid,b.name FROM tablea a |
应用场景:
该场景得到的是A中的所有数据减去“与B满足统一条件的数据”,然后得到A剩下的数据。
场景三:
right join 或者right outher join
1 | SELECT a.id aid,a.age,b.id bid,b.name FROM a |
应用场景:
该场景下得到B的所有数据和满足某一条件的A的数据。
场景四:
[right join] + [where A.column is null]
1 | SELECT a.id aid,a.age,b.id bid,b.name FROM a |
应用场景:
该场景下得到的是B中的所有数据减去“与A满足统一条件的数据”,然后得到B的剩余数据。
场景五:
full join(mysql不支持,但可以用left join union right join代替)
1 | SELECT a.id aid,a.age,b.id bid,b.name FROM a |
union会将重复的记录合并
应用场景:
该场景得到的是满足某一条件的公有数据和独有数据,类似并集。
场景六:
full join + is null(mysql不支持,但可以用(left join+is null)union(right join+is null)
1 | SELECT a.id aid,a.age,b.id bid,b.name FROM a |
应用场景:
该场景下得到的是A,B中不满足某一条件的记录之和。