首页 > 解决方案 > 从 MySQL 表中选择随机查询

问题描述

我正在尝试从表中选择特定数量的随机问题

问题表中的 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

标签: mysqlrandomforeign-keys

解决方案


如果您可以使用 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 中添加任意数量。


推荐阅读