一、左连接,右连接,内连接关系
左连接:左表全部+两个表交集(①+②)
右连接:右表全部+两个表交集(③+②)
内连接:两个表交集(②)
二、结合具体例子看(已经在mysql中执行过的例子,可以运行,没有错误)
表1
表2
1、左连接(left join)
返回左表所有行,右表与之匹配记录,若没有,返回null
select a.id,a.name,b.address from empi_patient a LEFT JOIN empi_patient_copy2 b on a.id = b.id
执行结果:
2、右连接(right join)
返回右表所有行,左表与之匹配记录,若没有,返回null
SELECT b.id,a.name,b.address from empi_patient a RIGHT JOIN empi_patient_copy2 b on a.id = b.id
3、内连接(inner join ,其中inner可省略)
返回两表的交集记录,返回2个表中完全符合条件的记录,结果集中表的字段内容均来自各自的表。
SELECT b.id,a.name,b.address from empi_patient a INNER JOIN empi_patient_copy2 b on a.id = b.id --inner join SELECT b.id,a.name,b.address from empi_patient a JOIN empi_patient_copy2 b on a.id = b.id --join
4、全连接(full join)
Mysql不支持全连接
5、交叉连接(cross join)
没有条件限制的交叉连接,将产生连接所涉及的表的笛卡尔积
SELECT b.id,a.name,b.address from empi_patient a CROSS JOIN empi_patient_copy2 b
加上条件,和内连接一样了
SELECT b.id,a.name,b.address from empi_patient a CROSS JOIN empi_patient_copy2 b on a.id = b.id