【问题标题】:Selcting Random queries from MySQL table从 MySQL 表中选择随机查询
【发布时间】:2018-07-31 08:58:32
【问题描述】:
我正在尝试从表格中选择特定数量的随机问题
问题表中的 3 个随机问题被标记为 group_1,另外两个来自 group_3
这是我的 SQL 命令
SELECT
questions.qid,
tags.tag
FROM
tag_dir tag_dir
JOIN questions ON questions.qid = tag_dir.qid
JOIN tags ON tags.id = tag_dir.tag_id
WHERE tags.id having 1 and 2
LIMIT 0,10
但我不知道如何获得特定数量的随机结果
这是我的表结构
这是我的db-fiddle
【问题讨论】:
标签:
mysql
random
foreign-keys
【解决方案1】:
如果您可以使用 UNION 获取每个标签的随机结果集,然后关联其他表,这可能会有所帮助。
SELECT
questions.qid,
tags.tag
FROM
(
(SELECT * from tag_dir where tag_id=1 order by rand() LIMIT 3)
UNION
(SELECT * from tag_dir where tag_id=2 order by rand() LIMIT 2)
) tq
JOIN questions ON questions.qid = tq.qid
JOIN tags ON tags.id = tq.tag_id
您可以根据需要在 UNION 中添加任意数量。
【解决方案2】:
此查询返回 5 个随机结果。您可以通过修改LIMIT 子句来更改结果数。
SELECT questions.qid, tags.tag
FROM tag_dir tag_dir
JOIN questions ON questions.qid = tag_dir.qid
JOIN tags ON tags.id = tag_dir.tag_id
WHERE tags.id having 1 and 2
ORDER BY RAND()
LIMIT 5;
Reference