链接查询其实就是对两个表记录作笛卡尔乘积。
若是不指定链接条件的话,则会对每行都作笛卡尔乘积,这样最后返回的结果树就会是两个表记录数的乘积;
若是指定则,则仅对符合列条件的行进行笛卡尔乘积,并返回结果。
在这里能够指定两个列相等,也能够自定两个列其余逻辑关系,并且也能够指定多个列经过or或者and进行链接。mysql
mysql中主要可使用以下几种join语法
1:join、inner join、cross join;语法:
select * from A inner join B on A.id = B.A_ID; -- 返回匹配的行sql
2:left join;语法:
select * from A left join B on A.id = B.A_ID; -- 即便右表中没有匹配,也返回左表的全部的行,右表没匹配的都为null;.net
3:right join ;语法:
select * from A right join B on A.id = B.A_ID; -- 即便左表中没有匹配,也返回右表全部的行,左表没匹配的都为null。blog
对于join语法有如下几点须要注意:
1:在mysql中,cross join能够由join或者inner join实现,这和mysql的实现是有关系的。
对于cross join操做,是仅做笛卡尔积而没有过滤条件,就是说没有on关键字;对于join与inner join是有on关键字的。
当使用join或者inner join而不使用on关键字,那么其做用就和cross join的做用同样了。
2:在mysql中没有out join,其实left join至关于left out join,一样对于right join也是相似。
3:对于mysql中join语法与两个表使用逗号隔开是同样的,也就是说:
select * from A join B; = select * from A, B;select
来自:https://blog.csdn.net/ialexanderi/article/details/79052190语法