首页 > 解决方案 > 如何选择具有唯一起始字符的随机单词

问题描述

我需要一个 MySQL 查询来从英语词典数据库中选择随机单词。但是,就我而言,查询产生的单词在前两个起始字符方面必须是唯一的。

例如,此查询执行选择随机单词的工作,但如您所见,它会产生单词以相同字符开头的结果。

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

效果在此屏幕截图中可见: 在此处输入图像描述

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

标签: mysqlsql

解决方案


我通常不推荐这种方法,但它可能是做你想做的最简单的方法:

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;

group by这使用了允许和select不兼容的 MySQL (mis) 功能。因为你想要一个随机的词——而不是按字母顺序说第一个词——我更愿意在这种情况下推荐使用这个功能。


推荐阅读