这两条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直观点
------解决方案--------------------内连接时一样
外联结时会不同
搂住可以测试一下