mysql - 使用 MySQL 查询计算文本列中具有许多 ID 的确定词

标签 mysql count word

这个问题是关于 MySQL 查询的。我有三个表:

1.品牌(包括:文字)

2.englishkeyword(由ID、word组成)

3.englishmodel(组成:ID,Pscore)

我想用已经在“word”中确定的单词来计算“text”中有多少个单词。然后将结果存储在“Pscore”中。这是我的代码

UPDATE englishmodel 
SET Pscore=( SELECT COUNT(*)
            FROM brand 
            WHERE text LIKE CONCAT('%', (SELECT word 
                                         FROM englishkeyword 
                                         WHERE ID=1), '%')
          ) 
WHERE ID=1;

而且它有效。 我的问题是:我可以一次查询多个 ID 吗?假设我有 1000 个 ID。

然后我这样编辑:

SELECT ek.ID as ID, COUNT(*) as Pscore
FROM englishkeyword ek, brand
WHERE (brand.text LIKE CONCAT('%', ek.word, '%'))
GROUP BY ek.ID;

INSERT INTO englishmodel (ID, Pscore)
    SELECT ek.ID as ID, COUNT(*) as Pscore
    FROM englishkeyword ek, brand
    WHERE (brand.text LIKE CONCAT('%', ek.word, '%'))
    GROUP BY ek.ID
ON DUPLICATE KEY
UPDATE Pscore = VALUES(Pscore)

但是结果是这样的:

enter image description here

真诚地感谢任何答案

最佳答案

以下查询返回每个单词的分数:

SELECT ek.ID as ID, COUNT(*) as Pscore
FROM englishkeyword ek, brand
WHERE (brand.text LIKE CONCAT('%', ek.word, '%'))
GROUP BY ek.ID

然后你可以使用这个查询来INSERT ... ON DUPLICATE KEY UPDATE分数。

INSERT INTO englishkeywordmodel (ID, Pscore)
    SELECT ek.ID as ID, COUNT(*) as Pscore
    FROM englishkeyword ek, brand
    WHERE (brand.text LIKE CONCAT('%', ek.word, '%'))
    GROUP BY ek.ID
ON DUPLICATE KEY
UPDATE Pscore = VALUES(Pscore)

关于mysql - 使用 MySQL 查询计算文本列中具有许多 ID 的确定词,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33631767/

相关文章:

linux - 打印缺失的单词和文件名 - linux

c++ - 在 C++ 中查找非元音对

markdown - Word to Markdown 通过 pandoc : prevent line breaks in paragraphs

php - 在 Lithium 中调用 MySQL 函数

php - MYSQL 在重型数据库中的搜索速度

mysql - 在 MySQL 中,这个简单的嵌套 SELECT 子句到底意味着什么?

mysql - 使用 MySQL 中同一个表的 COUNT 连接两个查询

mysql - 从一个表中加入两个 select 语句

MySQL 对行进行计数和排序

mysql - 从一个表登录用户并计算同一语句中另一个表的出现次数