我需要一个MySQL查询来从英语词典数据库中选择随机单词。但是,就我而言,查询产生的单词在前两个开始字符方面必须是唯一的。
例如,此查询执行选择随机单词的工作,但是如您所见,它会生成结果,其中单词以相同字符开头。
SELECT DISTINCT(word) FROM en_english479k WHERE CHAR_LENGTH(word)>=12 ORDER BY RAND() LIMIT 10
我需要生成就其起始字符(在本例中为前两个)而言完全唯一的单词。
答案 0 :(得分:0)
我通常不推荐这种方法,但这可能是您想要做的最简单的方法:
.body-temp{
height:1000px;
margin-bottom:300px;
background-color:black;
z-index:5000;
}
/* Footer
-------------------------------------------------- */
footer{
height:300px;
background-color:#232323;
margin: 0 auto;
text-align:center;
font-weight:300;
font-size:.8rem;
color:#666666;
z-index: -1000;
}
这使用了MySQL(错误)功能,允许<div class="container body-temp">
</div>
<!-- Footer
–––––––––––––––––––––––––––––––––––––––––––––––––– -->
<footer class="container-fluid fixed-bottom">
<a class="" href="#">
<img class="grow" id="footer-logo" src="images/mb-white.svg" alt="Margaret Biggs Fine Art">
</a>
<p>© 2018 Margaret Biggs</p>
<div>
<a class="footer-icons" href="#">
<i class="fab fa-linkedin-in"></i>
</a>
<a class="footer-icons" href="#">
<i class="fab fa-facebook-f"></i>
</a>
</div>
</footer>
和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;
不兼容。因为您想要一个 random 单词-而不是按字母顺序第一个字母-在这种情况下,我建议使用此功能。
答案 1 :(得分:0)
花了我一段时间,但我想我才想通了。
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