如何选择在某些列上均匀分布的行?

时间:2011-06-02 06:14:35

标签: mysql sql select

我有一个表tbl,其中包含3列imp_col, data1, data2,其中imp_col's类型为enum('imp1', 'imp2, 'imp3', 'imp4')。现在,如果我想随机选择10行,我可以这样做。

select imp_col, data1, data2 from tbl where imp_col in ('imp1', 'imp2', 'imp3') limit 10 order by rand();
但在这种情况下,所有10个结果行可能imp_colimp1
是否有一个SQL查询可以返回10行imp_colimp1, imp2, imp3之间平均分配?
谢谢。

2 个答案:

答案 0 :(得分:0)

你应该试试

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

我认为IN不适用于枚举

答案 1 :(得分:0)

你能在mySQL的内联视图中使用limit和rand()吗?

      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'值。