2016-04-14 11 views
1

Tablo tbl_ sorusu var.Satırı concat ile grupla seçin ve RAND kullanarak sınırlayın()

subject_id question_id 
3    4,5 

Benim tablo şöyle:

id question subject_id 
1 a   1 
2 b   1 
3 c   2 
4 d   3 
5 e   3 
6 f   3 

Ben

SELECT subject_id, group_concat(id) 
FROM tbl_qus_bank 
WHERE subject_id=3 
ORDER by RAND() LIMIT 2 

kullanarak denedim ama işe yaramadı Böyle kaydetmek istiyorum. alternatif olarak, substring_index() kullanabilirsiniz

SELECT subject_id, group_concat(id) 
FROM (SELECT qb.* 
     FROM tbl_qus_bank qb 
     WHERE subject_id = 3 
     ORDER by RAND() LIMIT 2 
    ) qb 
GROUP BY subject_id; 

Veya - deneklerin toplam sayısı çok büyük değilse:

cevap

1

bir alt sorgu deneyin

SELECT subject_id, 
     substring_index(group_concat(id) order by rand(), ',', 2) 
FROM tbl_qus_bank 
WHERE subject_id = 3; 

ORDER BY ve LIMIT sonuçları için geçerli tüm sorgunun Yani,'dan sonra işlendikten sonra GROUP_CONCAT() sonuçları zaten oluşturmuştur.

İlgili konular