SELECT KK.WORD FROM KEYWORD KK WHERE EXISTS (SELECT KC.KID FROM CLASS CC, KEYWORD_CLASS KC WHERE CC.CID = KC.CID AND KC.KID = KK.KID group by kc.kid having sum(decode(cc.name,'门户网站',0,'搜索引擎',0,1))=0 and sum(decode(cc.name,'门户网站',1,'搜索引擎',1,0))=2 )
我发现两条语句效率一样的啊、什么原因啊???感觉我之前的比这个还快。我之前的语句、加order by 之后 修改后的语句:我只是分页取前20条记录的对比。。
我的表系多对多的:你的with as 里面都错了。表结构:
keyword( kid , word)【MyISAM引擎,kid为自增字段】
1,'百度'
2,'新华网'
3,'谷歌'
4,'人人网'
class(cid,name)【MyISAM引擎,cid为自增字段】
1,'门户网站’
2,'搜索引擎'
3,'门内网站'
keyword_class(kid,cid)【MyISAM引擎,kid,cid分别来自其他两个表】
1,1
1,2
1,3
2,1
3,1
3,2
3,3
4,1
4,2
FROM KEYWORD KK
WHERE EXISTS (SELECT KC.KID
FROM CLASS CC, KEYWORD_CLASS KC
WHERE CC.CID = KC.CID
AND KC.KID = KK.KID
group by kc.kid
having sum(decode(cc.name,'门户网站',0,'搜索引擎',0,1))=0
and sum(decode(cc.name,'门户网站',1,'搜索引擎',1,0))=2
)
修改后的语句:我只是分页取前20条记录的对比。。