日期:2014-05-18  浏览次数:20389 次

这两条SQL语句有区别吗,哪个好?
这两句有区别吗,哪个好?
Select   A.fielda1,B.fieldb1   From   Table1   A   Join   Table2   B   On   A.fielda2=B.fieldb2   And   A.fielda1= 'abcd '

Select   A.fielda1,B.fieldb1   From   Table1   A   Join   Table2   B   On   A.fielda2=B.fieldb2
Where   A.fielda1= 'abcd '

------解决方案--------------------
A.fielda1= 'abcd '
------
一个做表联接用,一个做数据筛选用
------解决方案--------------------
在内联接语句中,二者等价。

------解决方案--------------------
ON 之后是联接条件,WHERE 之后是筛选条件,在外联接时是可能存在差异的,如下面的例子:

declare @T1 table(id int,code varchar(4))
insert into @T1 select 1, 'AAAA '
insert into @T1 select 2, 'BBBB '
declare @T2 table(id int,name varchar(4))
insert into @T2 select 1, 'CCCC '
insert into @T2 select 1, 'DDDD '
insert into @T2 select 2, 'EEEE '

select * from @T1 a left join @T2 b on a.ID=b.ID and b.name= 'CCCC '
select * from @T1 a left join @T2 b on a.ID=b.ID where b.name= 'CCCC '

------解决方案--------------------
在内联接语句中,二者等价。提倡后者。

------解决方案--------------------
但我感觉在条件很复杂是用WHERE直观点
------解决方案--------------------
内连接时一样
外联结时会不同
搂住可以测试一下