Join可以根據(jù)多張表之間的關系用來獲取新表强挫?反正是類似的效果岔霸。
假設有以下兩張表,Users 和 orders:
表一:Users
表二:orders
1 Join
執(zhí)行以下語句:
select * from Users join orders where Users.id=orders.userId;
可得到如下表:
表三
若不使用join俯渤,執(zhí)行以下語句:
select * from Users inner join orders where Users.id=orders.userId;
發(fā)現(xiàn)結果是一樣的呆细。
2 Left Join、Right Join
執(zhí)行:
select * from Users left join orders where Users.id=orders.userId;
發(fā)現(xiàn)報錯八匠,不知為何絮爷,這個時候把 where 改成 on 再執(zhí)行:
select * from Users left join orders on Users.id=orders.userId;
得到如下結果:
表4
表 4 結合了表1與表2的所有列,且保留了左表的所有行梨树,若左表的行沒有與右表對應的行坑夯,則用null填充。
Right join和left join效果是類似的劝萤。
執(zhí)行
select * from Users right join orders on Users.id=orders.userId;
可得如下結果:
表5
若采用 full join渊涝,執(zhí)行:
select * from Users full join orders on Users.id=orders.userId;
發(fā)現(xiàn)報錯!原因是:mysql不支持full join床嫌。(這里用的是mysql)
替代的寫法是采用 union:
select * from Users right join orders on Users.id=orders.userId
union
select * from Users left join orders on Users.id=orders.userId;
可得到如下結果:
表6
References:
http://www.w3school.com.cn/sql/sql_join_full.asp
https://blog.csdn.net/lasoup/article/details/52772365