我有一张包含大量单词的表格,还有一个字段,其中包含每个单词的字母数。
编辑:下面的示例数据集只显示表格布局 - 所有长度组合共有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个字母的任意组合。
有人可以帮忙吗?
谢谢,
约翰
答案 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 |
+---------+------------+