Подсчитать определенное слово со многими идентификаторами в текстовом столбце, используя запрос MySQL

Этот вопрос о MySQL Query. У меня есть три таблицы:

1.бренд (состоит из: текста)

2.englishkeyword (состоит из идентификатора, слова)

3. Английская модель (состоит из: ID, Pscore)

Я хочу посчитать, сколько слов в "тексте" со словом, которое уже определено в "слове". Затем результат сохраняется в "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)

Но результат таков:

введите описание изображения здесь

Искренне благодарю за любой ответ

1 ответ

Решение

Следующий запрос возвращает оценку для каждого слова:

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 счет.

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)
Другие вопросы по тегам