Как выбрать строки, которые равномерно распределены по некоторому столбцу? - PullRequest
0 голосов
/ 02 июня 2011

У меня есть таблица tbl с 3 столбцами imp_col, data1, data2, где тип imp_col's равен enum('imp1', 'imp2, 'imp3', 'imp4').Теперь, если я хочу выбрать 10 строк случайным образом, я могу сделать это следующим образом.

<code>select imp_col, data1, data2 from tbl where imp_col in ('imp1', 'imp2', 'imp3') limit 10 order by rand();
Но в этом случае все 10 полученных строк могут иметь imp_col как imp1.
Существует ли SQL-запрос, который может вернуть 10 строк с imp_col, равномерно распределенными среди imp1, imp2, imp3?
Спасибо.

Ответы [ 2 ]

0 голосов
/ 02 июня 2011

Можете ли вы использовать limit и rand () во встроенном представлении в mySQL?

      select Y.c1, Y.c2, Y.c3
      from
      (
      select c1, c2, c3.... from X limit 500 order by rand()
      ) as Y
      where Y.c2 in ( 'imp1', 'imp2', 'imp3')
      limit 10

Это даст вам больше шансов получить различные значения 'imp', если это допустимо.

0 голосов
/ 02 июня 2011

Вы должны попробовать с

imp_col LIKE "imp1"
OR imp_col LIKE "imp2"
OR imp_col LIKE "imp3"

Я думаю, что IN не работает для перечислений

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