Sql语法之join表连接说明
//左连接、右连接、内连接我们可以看成是在全连接的基础上过滤条件,这样比较容易理解
- 全连接Join
语法:
select * from A join B
查询结果:
A表数据条数*B表数据条数 =查询总条数
- 内连接:Inner join
语法:
select * from A inner join B on A.id=B.id
简化写法:
select * from A ,B where A.id=B.id
on后面的条件:
即可以是A表的过滤条件,也可以是B表的过滤条件,也可以是A表B表的关联条件
查询结果:
如果A有10条数据,B有10条数据,name全连接有10*10=100条数据,这100条数据中满足on后面条件的有8条,那么查询结果就有8条数据
- 左连接Left join
语法:
select * from A left outer join B on A.id=B.id
on后面条件:
只能是A表和B表的关联关系或者是B表的过滤条件。
如果在on后面写了A表的过滤条件,无效(相当于没写)
查询结果:
如果A有10条数据,B有10条数据,那么全连接有10*10=100条数据,在这100条数据中,满足条件的有8条数据,而且这8条数据中只包含5条A表的数据,也就是说A表中另外5条数据没有出现,现在left join 以左表为基准,即使没有满足条件的值也需要查出来,所以结果是8+5=13条数据
没有满足条件的这5条数据关于B表的字段都是null
- 右连接:Right join
同理左连接