SQL中多表查询:左连接、右连接、内连接、全连接、交叉连接

tech2024-07-11  58

一、左连接,右连接,内连接关系

左连接:左表全部+两个表交集(①+②)

右连接:右表全部+两个表交集(③+②)

内连接:两个表交集(②)

二、结合具体例子看(已经在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

 

最新回复(0)