2016-12-16 2 views
0

У меня есть список таблицы Стьюдента:Получить Студент с 2 различными предельными условиями

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

Я хочу, чтобы получить общие Случайные 5 Студентов 3 Секции Студентов и 2 B Раздела Студентов

Корпуса: если есть 2 A SECTION Records, тогда я получу только 4 записи в качестве результатов, могу ли я сохранить в целом 5 записей, которые включают в себя как SECTION A & B, если учеников недостаточно. Можете ли вы предложить мне решение

Done любой когда-то предложить простой SQL-запрос

+0

Упоминание ожидается выход –

+1

Это очень похоже на http://stackoverflow.com/questions/41163360/get-list- of-specific-2-limits-of-records-from-single-table-in-single-query – 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

Смежные вопросы