SQL 表连接

2018-07-28  本文已影响0人  某某香肠

两表做全相乘(交叉连接)

select * from table1,table2;

返回一个全新的表,其行数为两表的行数相乘,每一行的为两表每一行的两两结合,列数为两表列数的和。

因为这种方法会生成一个大表,非常占内存(比如两张10000行的表相乘就得到1×108行的表),所以应尽量避免使用。

左连接

table1 left join table2 on [条件];

当[条件]为真时,则将table2对应的行取出并将其添加到table1对应的行上,以形成一张新表。如果table1的某行在table2中没有匹配行,则新表中该行的保留table1的数据,table2列的值均为NULL。由于建立了索引,因此效率非常快。

右连接

table1 right join table2 on [条件];

与左连接相反,保留table2的所有行,如果table2的某行在table1中没有匹配行,则新表中该行的保留table2的数据,table1列的值均为NULL。

内连接

table1 inner join table2 on [条件];

与左右连接相似,但不同的时,不会保留table1和table2没有匹配上的行(也就是左右连接的交集)。

完全连接

table1 full join table2 on [条件];
保留左右表的所有行,不匹配的用NULL填充(也就是左右连接的并集),但mysql中不支持该语法。

上一篇下一篇

猜你喜欢

热点阅读