首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >mysql表中单词出现量的计算

mysql表中单词出现量的计算
EN

Stack Overflow用户
提问于 2014-04-10 10:55:38
回答 1查看 114关注 0票数 0

我得到的评论从不同的网站和存储到表。对于每个评论,我将在单独的列中获得adjectivenoun列表。

因此,对于每一次评审,这里都有主要的3个值。

review, adjective_list, rate

现在我想数数形容词重复的次数。在此之后,只推荐那些有形容词重复最长时间,并有4-5次复习的评论。

哪种方法是正确的?

我对此的想法是:

创建触发器,在有插入检查操作时执行操作。该触发器将读取列中有形容词,计算出现(不知道如何?),并存储顶部形容词与其发生。

同时推荐选择形容词,最大限度的出现,并查看4-5级的评论.

我不知道什么是正确的方式。任何帮助都是值得赞赏的。

主表如下所示:

EN

回答 1

Stack Overflow用户

发布于 2014-04-10 12:21:32

没有经过测试,但如果我正确理解您的要求,您应该能够基于这样的查询来完成以下工作:-

代码语言:javascript
复制
SELECT id, SUBSTRING_INDEX(SUBSTRING_INDEX(adj_noun, ',', aCnt + 1), ',', -1), COUNT(*)
FROM Main_Table
INNER JOIN
(
    SELECT Units.i + Tends.i * 10 + Hundreds.i * 100 AS aCnt
    (SELECT 0 i UNION SELECT 1 UNION SELECT 2 UNION SELECT 3 UNION SELECT 4 UNION SELECT 5 UNION SELECT 6 UNION SELECT 7 UNION SELECT 8 UNION SELECT 9) Units
    (SELECT 0 i UNION SELECT 1 UNION SELECT 2 UNION SELECT 3 UNION SELECT 4 UNION SELECT 5 UNION SELECT 6 UNION SELECT 7 UNION SELECT 8 UNION SELECT 9) Tens
    (SELECT 0 i UNION SELECT 1 UNION SELECT 2 UNION SELECT 3 UNION SELECT 4 UNION SELECT 5 UNION SELECT 6 UNION SELECT 7 UNION SELECT 8 UNION SELECT 9) Hundreds
) Integers_Query
ON aCnt <= (LENGTH(adj_noun) - LENGTH(REPLACE(adj_noun, ',', '')))
GROUP BY id, SUBSTRING_INDEX(SUBSTRING_INDEX(adj_noun, ',', aCnt + 1), ',', -1)

它使用一个子查询来获取一个数字范围(0到999),并对您的表执行一个连接,在该表中,数字小于或等于逗号出现在adj_noun列中的时间(即减去adj_noun的长度,去掉adj_noun全长中的所有逗号)。然后使用SUBSTRING_INDEX将字符串指向aCnt逗号,并再次使用SUBSTRING_INDEX将该逗号中的字符串返回到前一个逗号(结果中不包括逗号)。

COUNT / GROUP BY应该会为您获取每个单词出现在每个项的结果列表中的次数。

可能效率很低。只有处理1000个逗号分隔的单词(容易扩展,但会变慢)。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/22986022

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档