一个 MySql 的问题

2014-04-26 13:06:42 +08:00
 troyl
我现在有一个表如下图所示:



documentID 是文章号码
term 是词语
score 是词语在文章中出现的次数

当我执行
select documentID, score from myIndex where term='children' or term='infant';
结果如下:

可以看见有很多 documentID 的重复项,比如第二行和第三行的 documentID 就是一样的

123 5
123 3

有没有办法让 documentID 变成一个,而 score 的值是重复项之和?
拿第二行和第三行来说,就是:
123 8

先行谢过~
2990 次点击
所在节点    MySQL
11 条回复
patosky
2014-04-26 13:15:14 +08:00
count(score) group by documentID
patosky
2014-04-26 13:15:49 +08:00
@patosky sum()吧。。。写错了
troyl
2014-04-26 13:16:21 +08:00
@patosky select documentID, sum(score) as orScore from myIndex where term='children' or term='infant' group by documentID;
troyl
2014-04-26 13:16:34 +08:00
@patosky 谢谢!
troyl
2014-04-26 13:17:35 +08:00
@patosky 这次学到了 group by,以前都没接触过==
Mac
2014-04-26 13:18:30 +08:00
@troyl 那可以再学学 group_concat,这货也很有用
coolicer
2014-04-26 13:19:02 +08:00
你用concat_group和group by将它分组,重复的用distinct去掉。结果出来了再去自己计算。

大概是这样的结果:
123 5,3
xxx 1,2,3,4
...

只能帮到这里了
coolicer
2014-04-26 13:19:26 +08:00
打完发现已经有几个回答了 = =
troyl
2014-04-26 13:22:10 +08:00
@patosky 顺便再问一个问题,多个数的和可以用 sum() 函数
那么如果想求多个数的积呢?
patosky
2014-04-26 14:25:18 +08:00
@troyl select documentID, cast(exp(sum(log(score))) as SIGNED) from myIndex group by documentID
troyl
2014-04-26 14:30:16 +08:00
@patosky 谢谢啊

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/110116

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX