sql как показать частый список встречающихся слов в name? sql

SELECT word, COUNT(*) AS word_count FROM ( SELECT TRIM(SUBSTRING_INDEX(SUBSTRING_INDEX(products.name, ' ', numbers.n), ' ', -1)) AS word FROM products JOIN (SELECT 1 n UNION ALL SELECT 2 UNION ALL SELECT 3 UNION ALL SELECT 4 UNION ALL SELECT 5 UNION ALL SELECT 6 UNION ALL SELECT 7 UNION ALL SELECT 8 UNION ALL SELECT 9 UNION ALL SELECT 10) numbers ON CHAR_LENGTH(products.name) - CHAR_LENGTH(REPLACE(products.name, ' ', '')) >= numbers.n - 1 ) words WHERE word != '' GROUP BY word HAVING word_count > 1 ORDER BY word_count DESC;