日期:2014-05-17  浏览次数:20469 次

求关于两表联合查询的sql2005 最优化语句
第1张表结构:

schoolid schoolname address telephone photo provin city

第2张表结构: 

schoolid content sex spicte catname

表说明:两张表的schoolid是相同的,两张表都有30万条数据,需要显示 schoolname address telephone photo

sql查询条件是:

第1张的provin=1 和 city=1 ,第2张表的catname=“关键词”,第1张的schoolid和第2张表schoolid是相同的。

我是用的这条sql语句,但出现很多重复记录,如下:
select a.schoolname ,a.address ,a.telephone a.photo from 表1 a,表2 b where a.schoolid=b.schoolid and a.provin=1 and a.city=1 and b.catname='关键词'


求关于两表联合查询的sql2005 最优化语句?




------解决方案--------------------
引用:
老兄,好像不行!

select t1.schoolname,t1.address,t1.telephone,t1.photofrom 表1 t1 inner join 表2 t2        on t1.schoolid = t2.schoolidwhere t2.catname='xxx' and t1.provin=1 and t1.city=1

如果用inner join 会出现重复记录,因为表2中是多条相同schoolid的记录对应表1中的schoolid ,也就是表2中schoolid相同的会有多条,表1中schoolid是唯一的。


我上面已经修改了代码,使用exists了哈,用join肯定是会导致重复的:
select t1.schoolname,t1.address,t1.telephone,t1.photo
from 表1 t1
where t1.provin=1 and t1.city=1
      and exists(select 1 from 表2 t2 
                 where t1.schoolid = t2.schoolid and t2.catname='xxx')