如何选择具有唯一起始字符的随机单词

vaqhlq81  于 2021-06-18  发布在  Mysql
关注(0)|答案(2)|浏览(230)

我需要一个mysql查询从英语词典数据库中随机选择单词。但是,在我的例子中,查询生成的单词在前两个起始字符方面需要是唯一的。
例如,此查询执行选择随机单词的任务,但如您所见,它会生成单词以相同字符开头的结果。

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

在这个屏幕截图中可以看到效果:

我需要生成在起始字符方面完全唯一的单词(在我的例子中是前两个)。

x6492ojm

x6492ojm1#

我花了一段时间,但我想我已经明白了。

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
mjqavswn

mjqavswn2#

我一般不推荐这种方法,但这可能是做你想做的事情的最简单的方法:

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 不相容。因为你想要一个随机的单词,而不是按字母顺序说第一个单词,所以我建议在这种情况下使用这个特性。

相关问题