2016-12-16 48 views
0

我有学生的表列表:获取一个学生2个不同的限制条件

Student   SECTION 
student1  A 
student2  A 
student3  A 
student4  A 
student5  B 
student6  B 
student7  B 
student8  B 

我想获得总随机5名学生3名A区学生和2名B组学生

案例:如果有2个章节记录,那么我将只有4个记录作为结果权利,如果没有足够的学生,我可以保持总共5条记录,其中包括A部分& B.你可以建议我一个解决方案

做过任何一次推荐一个简单的SQL查询

+0

提及预期输出 –

+1

这是非常相似的http://stackoverflow.com/questions/41163360/get-list-特定的2限制的记录 - 从单表在单个查询 – Strawberry

+0

这看起来好像它通过自动翻译器,你可以扩展你想要的?另外,“随机”也许是编程中最困难的事情,你究竟是什么意思? – HoneyBadger

回答

2
SELECT student, section 
    FROM 
    (SELECT 1 seq, student, section FROM my_table WHERE section = 'a' ORDER BY RAND() LIMIT 3) x 
UNION 
    (SELECT 2 seq, student, section FROM my_table WHERE section = 'b') 
ORDER 
    BY seq, RAND() LIMIT 5; 
+1

看起来不错,第一个查询的方式我会从第二个查询的权利中取出3条记录。 – Developer

+1

是的。实际上'seq'在这个例子中并不是必须的,因为你可以通过RAND()来代替。 – Strawberry

相关问题