Sql学习:inner join


之前一直不在熟悉sql语句。今天刚好碰到sql的问题。关于inner join 跟普通的where条件语句的差别。

我以前都这样写Sql:

select * from A, B where A.id=1; 

 
这样写具体执行的时候,数据库会先根据

select * from A, B

 来获取A跟B的笛卡尔积的集合,然后再通过

where A.id=1

 来过滤这个集合。

假如用了inner join的话:

select * from A inner join B on A.name=B.name where A.id=1; 

这样的话,数据库首先会去找符合

A.name=B.name

 的记录,组成一个集合,然后再通过A.id来过滤出结果。

这样写效率就高了,以前没注意过。

inner join语句也可以写成这样:

select * from A,B where A.name=B.name and A.id=1; 

  2.多张表的连接:

select * from (A join B on A.name=B.name) inner join C on A.userId=B.userId

猜你喜欢

转载自zhao1659.iteye.com/blog/1917576