MySQL: выбор строк, упорядоченных по количеству слов - PullRequest
1 голос
/ 29 июня 2011

Как я могу заказать запрос по количеству слов? Возможно ли это?

У меня есть несколько строк в таблице с текстовыми полями. Я хочу упорядочить их по количеству слов в этих текстовых полях.

Вторая проблема заключается в том, что мне нужно выбрать только те строки, которые имеют, например, минимум 10 слов или максимум 20.

Ответы [ 2 ]

4 голосов
/ 29 июня 2011

Что ж, это не очень хорошо работает, поскольку вычисления строк должны выполняться для всех строк:

Количество слов в столбце MySQL можно посчитать следующим образом: SELECT SUM( LENGTH(name) - LENGTH(REPLACE(name, ' ', ''))+1) FROM table(при условии, что слова определены как «все разделенные пробелами»)

Теперь добавьте это к вашему запросу:

SELECT
    <fields>
FROM
    <table>
WHERE
    <condition>
ORDER BY SUM(LENGTH(<fieldWithWords>) - LENGTH(REPLACE(<fieldWithWords>, ' ', '')) + 1)

Или добавьте его к условию:

SELECT
    <fields>
FROM
    <table>
WHERE
    SUM(LENGTH(<fieldWithWords>) - LENGTH(REPLACE(<fieldWithWords>, ' ', '')) + 1) BETWEEN 10 AND 20
ORDER BY <something>
2 голосов
/ 29 июня 2011

Может быть, что-то вроде этого:

SELECT Field1, SUM( LENGTH(Field2) - LENGTH(REPLACE(Field2, ' ', ''))+1)
 AS cnt
FROM tablename
GROUP BY Field1
ORDER BY cnt

Field2 - это строковое поле, в котором вы хотите считать слова.

...