sql语句的join用法(二)

2014-11-24 08:41:04 ? 作者: ? 浏览: 2
warehouse

相当于如下语句:

select a.*,b.* from emp a,depart b;

需要注意的是交叉连接后只能跟where,不可以跟on。

如下语句是错的:

select a.*,b.* from emp a cross join depart b on a.depart=b.dpno;

要修改为这样的才正确:

select a.*,b.* from emp a cross join depart b where a.depart=b.dpno;

一般来讲,在大表关联的时候,建议使用inner join或者left join,不建议使用cross join或者where

比如:

select a.*,b.* from emp a,depart b where a.depart=b.dpno ; A ---不推荐

select a.*,b.* from emp a cross join depart b where a.depart=b.dpno ; B ---不推荐

select a.*,b.* from emp a inner join depart b on a.depart = b.dpno; C ----推荐

这是因为A,B中,sql需要先对两表生成笛卡尔积,然后才根据where后的条件进行判断,而使用C则不需要。所以C较有效率

摘自 猫叔的口粮

-->

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: