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

标签 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 个字母的任意组合。

有人能帮忙吗?

谢谢,

约翰

最佳答案

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 |
+---------+------------+

关于mysql - 选择 3 个随机单词(记录)- 每个字母计数一个,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44385835/

相关文章:

php - 尝试数据库导出会产生找不到网页错误

mysql - 设计 MySQL 数据库的技巧

mysql - 存储单个数字的最佳数据类型?

php - SQL 根据列优先级过滤重复项

sql - 使用递归和自连接的 Postgresql 查询

php - 我应该如何显示图像的缩略图?其中图像存储在数据库中,拇指存储在文件夹中

php - 使用php删除表的特定行

php - 分别从两个单独的 MySQL 表中删除信息?

sql - 将查询结果从结构转换为另一个 Golang 包的字符串

mysql - 谁删除了mysql数据库中的所有表