选择3个随机单词(记录) - 每个字母计数中的一个

时间:2017-06-06 09:07:49

标签: mysql sql

我有一张包含大量单词的表格,还有一个字段,其中包含每个单词的字母数。

编辑:下面的示例数据集只显示表格布局 - 所有长度组合共有65,000行。

word_id,word,letter_count
54908,swanage,7
37338,natured,7
61637,untwisting,10

我试图选择三个随机单词,确保有一个是4个字母,一个是7个字母,一个是10个字母。

我的SQL查询如下。

SELECT * FROM password
WHERE letter_count = 4 OR letter_count = 7 OR letter_count = 10
ORDER BY RAND()
LIMIT 3

以上将返回3个随机记录,但可以包含4,7或10个字母的任意组合。

有人可以帮忙吗?

谢谢,

约翰

1 个答案:

答案 0 :(得分:2)

DROP TABLE IF EXISTS my_table;

CREATE TABLE my_table
(word_id INT NOT NULL AUTO_INCREMENT PRIMARY KEY
,word VARCHAR(20) NOT NULL UNIQUE
);

INSERT INTO my_table VALUES
(1,'swanage'),
(2,'natured'),
(3,'untwisting'),
(4,'four'),
(5,'five'),
(6,'fifteen'),
(7,'blacksmith');


SELECT * 
  FROM 
     ( SELECT * FROM my_table WHERE CHAR_LENGTH(word) = 4 ORDER BY RAND() LIMIT 1 ) x
 UNION
     ( SELECT * FROM my_table WHERE CHAR_LENGTH(word) = 7 ORDER BY RAND() LIMIT 1 ) 
 UNION
     ( SELECT * FROM my_table WHERE CHAR_LENGTH(word) = 10 ORDER BY RAND() LIMIT 1) ;

+---------+------------+
| word_id | word       |
+---------+------------+
|       4 | four       |
|       1 | swanage    |
|       3 | untwisting |
+---------+------------+