场景:
Url表中存储url信息
Keywords表中有IID、word 、urlID、priority(优先级,假如是10~100,大为优)
参数为:上海、海上、打架、流氓;
期望过程:通过参数,得到urlID为:2、4、5;再根据其后优先级与查询的数目排序,既2(50)、4(100),5(10)
最终输出结果:新浪、谷歌、腾讯
这是自己做的一个关于搜索引擎的小demo,这个语句一直写不好,求解答
不考虑性能的话,纯粹实现。
Select N.Url from
(Select UrlID, sum(Priority) as Priority from Keywords
where word in ("上海",“海上“,"打架","流氓")
group by UrlID)M
inner join Url N
on M.UrlID=N.IID
order by M.Priority Descending
从实现上没有问题,我也尝试是修改in,因为这是最有可能影响性能的地方,不过当我看了执行计划后,我觉得修改下索引是一种很不错的选择,谢谢你的分享,很好
select url from url where iid in (select uriid from (
select urlid,count(1) c ,max(priority) m from keywords where word in ('','','') group by urlid
order by c,m
))
可能是我描述的不够清楚,误导了你的判断,另外不知道你用的是不是sql server?我把这句输入到数据库中,会报错,还是很感谢你的回答