2016-12-16 41 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