首页 新闻 会员 周边 捐助

数据库查询排序---求sql语句

0
悬赏园豆:50 [已解决问题] 解决于 2014-05-20 14:26

场景:

Url表中存储url信息

Keywords表中有IID、word 、urlID、priority(优先级,假如是10~100,大为优)

参数为:上海、海上、打架、流氓;

期望过程:通过参数,得到urlID为:2、4、5;再根据其后优先级与查询的数目排序,既2(50)、4(100),5(10)

最终输出结果:新浪、谷歌、腾讯

这是自己做的一个关于搜索引擎的小demo,这个语句一直写不好,求解答

zjruan的主页 zjruan | 菜鸟二级 | 园豆:219
提问于:2014-05-20 11:10
< >
分享
最佳答案
0

不考虑性能的话,纯粹实现。

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

收获园豆:40
爱编程的大叔 | 高人七级 |园豆:30844 | 2014-05-20 11:36

从实现上没有问题,我也尝试是修改in,因为这是最有可能影响性能的地方,不过当我看了执行计划后,我觉得修改下索引是一种很不错的选择,谢谢你的分享,很好

zjruan | 园豆:219 (菜鸟二级) | 2014-05-20 14:26
其他回答(1)
0

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

))

收获园豆:10
吴瑞祥 | 园豆:29449 (高人七级) | 2014-05-20 11:32

可能是我描述的不够清楚,误导了你的判断,另外不知道你用的是不是sql server?我把这句输入到数据库中,会报错,还是很感谢你的回答

支持(0) 反对(0) zjruan | 园豆:219 (菜鸟二级) | 2014-05-20 14:23
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册