首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > Mysql >

mysql中join,left join,right join 的差异

2012-08-14 
mysql中join,left join,right join 的区别先看例子:首先是joinselect vend_name ,prod_price,prod_name fr

mysql中join,left join,right join 的区别
先看例子:
首先是join

select vend_name ,prod_price,prod_name from products join vendors on vendors.vend_id = products.vend_id;

结果
+-----------------+------------+---------------------+| vend_name       | prod_price | prod_name           |+-----------------+------------+---------------------+| Bears R Us      | 5.99       | 8 inch teddy bear   || Bears R Us      | 8.99       | 12 inch teddy bear  || Bears R Us      | 11.99      | 18 inch teddy bear  || Doll House Inc. | 3.49       | Fish bean bag toy   || Doll House Inc. | 3.49       | Bird bean bag toy   || Doll House Inc. | 3.49       | Rabbit bean bag toy || Doll House Inc. | 4.99       | Raggedy Ann         || Fun and Games   | 9.49       | King doll           || Fun and Games   | 9.49       | Queen doll          |+-----------------+------------+---------------------+

left join
select vend_name ,prod_price,prod_name from products left join vendors on vendors.vend_id = products.vend_id;

结果
+-----------------+------------+---------------------+| vend_name       | prod_price | prod_name           |+-----------------+------------+---------------------+| Doll House Inc. | 3.49       | Fish bean bag toy   || Doll House Inc. | 3.49       | Bird bean bag toy   || Doll House Inc. | 3.49       | Rabbit bean bag toy || Bears R Us      | 5.99       | 8 inch teddy bear   || Bears R Us      | 8.99       | 12 inch teddy bear  || Bears R Us      | 11.99      | 18 inch teddy bear  || Doll House Inc. | 4.99       | Raggedy Ann         || Fun and Games   | 9.49       | King doll           || Fun and Games   | 9.49       | Queen doll          |+-----------------+------------+---------------------+

right join的情况呢
select vend_name ,prod_price,prod_name from products right join vendors on vendors.vend_id = products.vend_id;

+-----------------+------------+---------------------+| vend_name       | prod_price | prod_name           |+-----------------+------------+---------------------+| Bear Emporium   | NULL       | NULL                || Bears R Us      | 5.99       | 8 inch teddy bear   || Bears R Us      | 8.99       | 12 inch teddy bear  || Bears R Us      | 11.99      | 18 inch teddy bear  || Doll House Inc. | 3.49       | Fish bean bag toy   || Doll House Inc. | 3.49       | Bird bean bag toy   || Doll House Inc. | 3.49       | Rabbit bean bag toy || Doll House Inc. | 4.99       | Raggedy Ann         || Fun and Games   | 9.49       | King doll           || Fun and Games   | 9.49       | Queen doll          || Furball Inc.    | NULL       | NULL                || Jouets et ours  | NULL       | NULL                |+-----------------+------------+---------------------+

总结:join 的结果会和left join或者right join的其一的结果一样,顺序不同,不知道为什么呢,left join 左联结优先考虑左表,即products ,得到的结果行数和products表的行数一样,right join 右联结,有线考虑右表,即vendors ,得到的结果和右表vendors的行数一样,无法匹配的时候用NULL值填充。

热点排行