Как выбрать случайные слова с уникальными начальными символами - PullRequest
0 голосов
/ 02 ноября 2018

Мне нужен запрос MySQL для выбора случайных слов из базы данных английского словаря. Однако в моем случае слова, полученные в результате запроса, должны быть уникальными с точки зрения их первых двух начальных символов.

Например, этот запрос выполняет выбор случайных слов, но, как вы можете видеть, он дает результаты, где слова начинаются с одинаковых символов.

SELECT DISTINCT(word) FROM en_english479k WHERE CHAR_LENGTH(word)>=12 ORDER BY RAND() LIMIT 10

Эффект виден на этом скриншоте: enter image description here

Мне нужно сгенерировать слова, которые являются абсолютно уникальными с точки зрения их начальных символов (первые два в моем случае).

Ответы [ 2 ]

0 голосов
/ 02 ноября 2018

Это заняло у меня какое-то время, но, думаю, я просто понял это.

SELECT 
word, left(word, 2)
FROM en_english479k 
WHERE word IN 
(
SELECT word FROM en_english479k WHERE CHAR_LENGTH(word) >= 12 
)
group by left(word, 2)
ORDER BY RAND()
LIMIT 50
0 голосов
/ 02 ноября 2018

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

select e.word
from (select e.*
      from en_english479k e
      where char_length(word) >= 12 
      order by rand()
     ) e
group by left(word, 2)
order by e.word
limit 10;

Используется функция MySQL (mis), позволяющая group by и select быть несовместимыми. Поскольку вы хотите случайное слово - а не произносить первое в алфавитном порядке - в этом случае мне удобнее рекомендовать использовать эту функцию.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...