之前一直不在熟悉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