mysql的多表连接

Posted rookie111

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了mysql的多表连接相关的知识,希望对你有一定的参考价值。

笛卡尔积 select * from A,B;不需要任何条件,两个表相乘。

连接类型:交叉连接,内连接,外连接。

(1)交叉连接,基本就是和笛卡尔积一样的连接。select * from A cross join B where .....

(2)内连接:自然连接,等值连接,非等值连接。

  a.自然连接:在连接条件中使用=运算符比较连接列的列值,但是删除连接表中的重复列。

  b.等值连接:不删除重复的列,A inner join B on a.id=b.id(也可以隐式 A,Bwhere a.id=b.id)A,B的顺序有关系。

  c.非等值连接:用<,>等运算符连接两个表。

(3)外连接:左外连接,右外连接,全外连接。

  a.左外连接 A left outer join B on A.id=B.id 

 

  b.右外连接 A right outer join B on A.id=B.id

c.全外连接 A full outer join on A.id=B.id

 

注:

on和where筛选条件的不同:

1.on条件是再生成临时表时使用的条件,不管on中的条件是否为真,都会返回左边表中的记录(left outer join)。

 2.where则是临时表生成后,对数据进行的过滤条件。

以上是关于mysql的多表连接的主要内容,如果未能解决你的问题,请参考以下文章

「mysql优化专题」你们要的多表查询优化来啦!请查收

从入门到自闭之Python--MySQL数据库的多表查询

MySQL基础语法之多表连接查询

相当于 MySQL 多表内连接的 Google BigQuery

MYSQL的多表查询

mysql-----04 多表查询