2012-12-26 50 views
4

我有一个包含三类问题的表。3组中的每组获得一条随机记录

我使用下列获得一个随机问题:

SELECT * FROM tblQuestions ORDER BY RAND() LIMIT 1 

但该表还具有一个名为qCategory场,其中有3个类别的总额。我想要的是SQL查询从3个类别(总共3个随机问题)中获取一个问题。

回答

6

您可以通过使用UNION ALL将三个查询的结果:

(SELECT * FROM tblQuestions WHERE qCategory='A' ORDER BY RAND() LIMIT 1) 
UNION ALL 
(SELECT * FROM tblQuestions WHERE qCategory='B' ORDER BY RAND() LIMIT 1) 
UNION ALL 
(SELECT * FROM tblQuestions WHERE qCategory='C' ORDER BY RAND() LIMIT 1) 
+0

如若这项工作为MySQL?我在phpMyAdmin中试过这个查询,但得到一个错误:“UNION的使用不正确”。 – janlindso

+0

@ user880980:是的,它可以工作......我只是忘了括号。查看更新。 –

+0

作品!非常感谢! – janlindso

2

一种方式做到这一点是使用GROUP BY

SELECT * FROM tblQuestions ORDER BY RAND() GROUP BY qCategory 
相关问题