- 從一個擁有自增id(
id>0
)的表T里,隨機取一條數據?
方案: 傳入一個隨機數r,用此隨機數對最大的id進行取余
select * from T where id >= (select r%max(id) from T) limit 1;
- 從一個擁有自增id(
id>0
)的表T里,在指定范圍CONDITION內隨機取一條數據?
方案: 傳入一個隨機數r, 生成指定范圍內【即id區間】的一個隨機數即可
select * from T where CONDITION and id >= (select min(id) + IFNULL(r%(max(id) -min(id)), 0) from T where CONDITION) limit 1
注: 當max(id)和min(id)相同時,r%(max(id)-min(id)結果為NULL