Случайный выбор ограниченного количества записей с двумя условиями в MySQL - PullRequest
1 голос
/ 21 октября 2009

У меня есть таблица MySQL со столбцом под названием «приоритет». Столбец может иметь два значения: высокое или низкое. Я хочу выбрать 8 записей из таблицы случайным образом, но я хочу, чтобы 6 из них имели высокий приоритет, а 2 - низкий. Если возможно, я бы хотел сделать это одним оператором SQL. Есть ли способ сделать два ОГРАНИЧЕНИЯ в одном запросе на основе критериев такого типа?

Ответы [ 4 ]

7 голосов
/ 21 октября 2009
SELECT t1.*
  FROM table t1
 WHERE priority = 'high'
 ORDER BY rand() Limit 8
UNION ALL
SELECT t1.*
  FROM table t1
 WHERE priority = 'low'
 ORDER BY rand() Limit 2
0 голосов
/ 27 апреля 2010

Для тех из вас, кто столкнулся с той же проблемой, что и я, я получил сообщение об ошибке «Неправильное использование UNION и ORDER BY». Потом я нашел эту страницу , которая говорит вам, как это исправить. Все, что вы делаете, это окружаете запрос круглыми скобками. Спасибо за помощь!

0 голосов
/ 21 октября 2009

Используйте союз:

SELECT * FROM table WHERE priority = 'high' ORDER BY RAND() LIMIT 8 
UNION ALL
SELECT * FROM table WHERE priority = 'low' ORDER BY RAND() LIMIT 2 
0 голосов
/ 21 октября 2009

Используйте объединение, поэтому у вас есть два оператора выбора в одном.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...