MYSQL用法(二) inner join,left join right join,full join 示例
2014-08-12 11:07
656 查看
一 准备工作
1.1 新建表: 用户a表
1.2 插入一些数据后,查询结果为:
mysql > select * from a;
1.3 新建表: 产品b表
1.4 插入一些数据后,查询结果为:
mysql > select * from b;
二 查询语句
2.1 inner join 测试
mysql > SELECT a.*, b.* FROM a AS a INNER JOIN b AS b ON a.PRODUCT_ID = b.PRODUCT_ID;
点评:
inner join (内连接),可以简写为 join ;又称等值连接;
只显示两个表中联结字段相等的行.这个和用select查询多表是一样的效果,
即 a表与b表内连接或b表与a表内连接 结果是一样的。
2.2 left join测试
情况一: a表与b表左连接
mysql > SELECT a.*, b.* FROM a AS a LEFT JOIN b AS b ON a.PRODUCT_ID = b.PRODUCT_ID;
情况二: b表与a表左连接
mysql > SELECT a.*, b.* FROM b AS b LEFT JOIN a AS a ON b.PRODUCT_ID = a.PRODUCT_ID;
点评:
左外连接:
left join(左连接) :以左表为基础,显示左表中的所有记录,不管是否与关联条件相匹配,而右表中的数据只显示与关联条件相匹配的记录,不匹配的记录以NULL字符填充.
left join 是left outer join的简写,left join默认是outer属性的。
情况三: a表与b表右连接
mysql > SELECT a.*, b.*FROMa AS aRIGHT JOIN b AS b ON a.PRODUCT_ID = b.PRODUCT_ID;
情况四: b表与a表右连接
mysql > SELECT a.*, b.* FROM b AS b
RIGHT JOIN a AS a ON b.PRODUCT_ID = a.PRODUCT_ID;
点评:
右外连接:
right join(右连接) :以右表为基础,显示右表中的所有记录,不管是否与关联条件相匹配,而左表中的数据只显示与关联条件相匹配的记录,不匹配的记录以NULL字符填充。
2.2 full join测试
mysql >SELECT a.*, b.* FROM b AS b FULL JOIN a AS a ON b.PRODUCT_ID = a.PRODUCT_ID;
特别注意: FULL JOIN 与版本有关,由于我的数据库版本不支持full join函数,所以 就不测了;
点评:
全外连接:
full join(全连接) :显示多个表中的所有的记录,不匹配关联条件的列以NULL字符填充。
另外如果MYSQL数据库想看见全连接的效果可以采用left join +union + right join 的方式实现;
如:
mysql >
SELECT a.*, b.* FROM a AS a LEFT JOIN b AS b ON a.PRODUCT_ID = b.PRODUCT_ID
UNION
SELECT
a.*, b.*FROM
a AS a RIGHT JOIN b AS b ON a.PRODUCT_ID = b.PRODUCT_ID;
1.1 新建表: 用户a表
1.2 插入一些数据后,查询结果为:
mysql > select * from a;
1.3 新建表: 产品b表
1.4 插入一些数据后,查询结果为:
mysql > select * from b;
二 查询语句
2.1 inner join 测试
mysql > SELECT a.*, b.* FROM a AS a INNER JOIN b AS b ON a.PRODUCT_ID = b.PRODUCT_ID;
点评:
inner join (内连接),可以简写为 join ;又称等值连接;
只显示两个表中联结字段相等的行.这个和用select查询多表是一样的效果,
即 a表与b表内连接或b表与a表内连接 结果是一样的。
2.2 left join测试
情况一: a表与b表左连接
mysql > SELECT a.*, b.* FROM a AS a LEFT JOIN b AS b ON a.PRODUCT_ID = b.PRODUCT_ID;
情况二: b表与a表左连接
mysql > SELECT a.*, b.* FROM b AS b LEFT JOIN a AS a ON b.PRODUCT_ID = a.PRODUCT_ID;
点评:
左外连接:
left join(左连接) :以左表为基础,显示左表中的所有记录,不管是否与关联条件相匹配,而右表中的数据只显示与关联条件相匹配的记录,不匹配的记录以NULL字符填充.
left join 是left outer join的简写,left join默认是outer属性的。
情况三: a表与b表右连接
mysql > SELECT a.*, b.*FROMa AS aRIGHT JOIN b AS b ON a.PRODUCT_ID = b.PRODUCT_ID;
情况四: b表与a表右连接
mysql > SELECT a.*, b.* FROM b AS b
RIGHT JOIN a AS a ON b.PRODUCT_ID = a.PRODUCT_ID;
点评:
右外连接:
right join(右连接) :以右表为基础,显示右表中的所有记录,不管是否与关联条件相匹配,而左表中的数据只显示与关联条件相匹配的记录,不匹配的记录以NULL字符填充。
2.2 full join测试
mysql >SELECT a.*, b.* FROM b AS b FULL JOIN a AS a ON b.PRODUCT_ID = a.PRODUCT_ID;
特别注意: FULL JOIN 与版本有关,由于我的数据库版本不支持full join函数,所以 就不测了;
点评:
全外连接:
full join(全连接) :显示多个表中的所有的记录,不匹配关联条件的列以NULL字符填充。
另外如果MYSQL数据库想看见全连接的效果可以采用left join +union + right join 的方式实现;
如:
mysql >
SELECT a.*, b.* FROM a AS a LEFT JOIN b AS b ON a.PRODUCT_ID = b.PRODUCT_ID
UNION
SELECT
a.*, b.*FROM
a AS a RIGHT JOIN b AS b ON a.PRODUCT_ID = b.PRODUCT_ID;
相关文章推荐
- Mysql基本用法-left join、right join、 inner join、子查询和join-02
- Mysql 连接(left join, right join, inner join ,full join)
- sql:inner join,left join,right join,full join用法及区别
- sql:inner join,left join,right join,full join的用法及含义
- Mysql----Join用法(Inner join,Left join,Right join, Cross join, Union模拟Full join)及---性能优化
- LEFT JOIN、RIGHT JOIN、FULL JOIN、INNER JOIN的区别以及用法
- mysql多表连接查询inner join, left join , right join ,full join ,cross join
- sql:inner join,left join,right join,full join的用法及含义
- Mysql 连接(left join, right join, inner join ,full join)
- sql:inner join,left join,right join,full join的用法及含义
- MySQL中LEFT JOIN 、RIGHT JOIN、INNER JOIN、FULL JOIN 的区别
- inner join,left join,right join,full join以及外连接"(+)"的用法
- left join,inner join,right join,cross join,full join
- sql多表连接查询inner join, left join , right join ,full join ,cross join
- sql 多表连接查询inner join, left join , right join ,full join ,cross join
- left join,inner join,right join,cross join,full join的区别[转载]
- left join,inner join,right join,cross join,full join的区别
- 超详细mysql left join,right join,inner join用法分析
- mysql中left join,right join,inner join,outer join的用法详解【转】
- sql多表连接查询inner join, left join , right join ,full join ,cross join