Подсчитать определенное слово со многими идентификаторами в текстовом столбце, используя запрос 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)