我有一个表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_col
为imp1
。 imp_col
在imp1, imp2, imp3
之间平均分配?
答案 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'值。