从MySQL表中选择随机查询

从MySQL表中选择随机查询,mysql,random,foreign-keys,Mysql,Random,Foreign Keys,我试图从表中选择特定数量的随机问题 类似于问题表中的3个随机问题,标记为组1,组3中的2个 这是我的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 但我不知道

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

类似于问题表中的3个随机问题,标记为组1,组3中的2个

这是我的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
但我不知道如何获得特定数量的随机结果

这是我的桌子结构


这是我的

此查询返回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;

如果您可以使用联合来获取每个标记的随机结果集,然后关联其他表,这可能会有所帮助

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
您可以根据需要在联盟中添加任意数量的成员