Сначала взгляните на этот вопрос , чтобы узнать, как разбить слова в столбце на несколько строк. В этом вопросе слова разделены запятой, но, конечно, это работает так же с пробелами.
Для вашего случая, предположим, что таблица tablename
с id
и ваши слова в columnname
где у вас есть максимум 4 слова в столбце, это будет выглядеть так:
SELECT
tablename.id,
SUBSTRING_INDEX(SUBSTRING_INDEX(tablename.columnname, ' ', numbers.n), ' ', -1) columnname
FROM
(SELECT 1 AS n UNION ALL
SELECT 2 UNION ALL
SELECT 3 UNION ALL
SELECT 4) numbers
INNER JOIN tablename
ON LENGTH(tablename.columnname) - LENGTH(REPLACE(tablename.columnname, ' ', '')) >= numbers.n - 1
ORDER BY
id, n
Тогда вы можете просто посчитать слова:
SELECT columnname, count(*) FROM (
SELECT
tablename.id,
SUBSTRING_INDEX(SUBSTRING_INDEX(tablename.columnname, ' ', numbers.n), ' ', -1) columnname
FROM
(SELECT 1 AS n UNION ALL
SELECT 2 UNION ALL
SELECT 3 UNION ALL
SELECT 4) numbers
INNER JOIN tablename
ON LENGTH(tablename.columnname) - LENGTH(REPLACE(tablename.columnname, ' ', '')) >= numbers.n - 1
ORDER BY
id, n
) normalized
GROUP BY columnname
Если у вас больше, чем 4 слова в вашем столбце, вам нужно расширить выбор с numbers
соответственно.
Редактировать: О, я опоздал, и я предположил MySQL.