Что ж, это не очень хорошо работает, поскольку вычисления строк должны выполняться для всех строк:
Количество слов в столбце 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>