ANSI语法-join小节

A Inner join:返回所有符合条件的行,不包含不一致的行。

A.1 Natural Join:要求有同名同数据类型的列名,在使用的时候不能运用表的别名,可以连接多个表。

Select * from table_a natural join table_b;

A.2 Join using:有同名但数据类型不一致的列名,可将列名加在using后。也不能使用表的别名。

Select * from table_a join table_b using(column_1,column_2);

A.3 Join on:可以不同列名不同数据类型,可以使用表的别名。

Select * from table_a ta join table_b tb on ta.column_1=tb.column_2;

等同Select * from table_a ta join table_b tb where ta.column_1=tb.column_2;

A.4 Cross join:进行笛卡儿集的计算,表a有n行,表b有m行,结果返回m×n行。

Select * from table_a cross join table_b;

等同Select * from table_a ,table_b;

B Outer join:返回所有符合条件的行,包含不一致的行。

B.1 left outer join:将join左边不符合条件的行也一起查询出来。

Select * from table_a left join table_b using(column_1);

Select * from table_a ta left outer join table_b tb on ta.column_1=tb.column_2;

等同Select * from table_a ta ,table_b tb where ta.colume_1(+)=tb.cloumn_2;

B.2 right outer join:将join右边不符合条件的行也一起查询出来。

Select * from table_a right join table_b using(column_1);

Select * from table_a ta right outer join table_b tb on ta.column_1=tb.column_2;

等同Select * from table_a ta ,table_b tb where ta.colume_1=tb.cloumn_2(+);

B.3 full outer join:将join两边不符合条件的行也一起查询出来。

Select * from table_a ta full outer join table_b tb on ta.column_1=tb.column_2;

等同Select * from table_a ta ,table_b tb where ta.colume_1(+)=tb.cloumn_2 union Select * from table_a ta ,table_b tb where ta.colume_1=tb.cloumn_2(+);

C other join:

C.1 self-join:表自己做连接,由于需要写2个表的别名,因此不能用natural join和join using。

Select ta.* from table_a ta inner join table_a tb on ta.column_1=tb.cloumn_2;

等同Select ta.* from table_a ta, join table_a tb where ta.column_1=tb.cloumn_2;

相关文章

发表评论

电子邮件地址不会被公开。 必填项已用*标注

This site uses Akismet to reduce spam. Learn how your comment data is processed.