56,677
社区成员
发帖
与我相关
我的任务
分享
SELECT * FROM table_name as t1
WHERE t1.id>=(RAND()*(SELECT MAX(id)
FROM table_name))
ORDER BY t1.id
LIMIT 1;
如果t1.id的顺序不是从1开始的(比如id为自增量,但删除过很多数据,造成id的“空洞”),就要考虑使用id区间随机:
SELECT * FROM table_name as t1
WHERE t1.id>=(SELECT RAND()*(MAX(id)-MIN(id)) + MIN(id)
FROM table_name)
ORDER BY t1.id
LIMIT 1;
[/quote]谢谢SELECT * FROM table_name as t1
WHERE t1.id>=(RAND()*(SELECT MAX(id)
FROM table_name))
ORDER BY t1.id
LIMIT 1;
如果t1.id的顺序不是从1开始的(比如id为自增量,但删除过很多数据,造成id的“空洞”),就要考虑使用id区间随机:
SELECT * FROM table_name as t1
WHERE t1.id>=(SELECT RAND()*(MAX(id)-MIN(id)) + MIN(id)
FROM table_name)
ORDER BY t1.id
LIMIT 1;
select * from table_name where col1=xxx
and id>=rand()*(SELECT max(id) FROM table_name WHERE col1=xxx) limit 1;
记得查询条件加索引。