这句简单的查询咋回事?求解释

这句简单的查询怎么回事?求解释

我有个student表,id为1~1000,我想随机找出其中的一条记录,用下面的sql

select * from student where id=(select floor(1+rand()*1000));

结果有时候显示为0条,有时候居然能返回两条数据,咋回事阿?不是限定了id等于一个数字吗?怎么还能返回两条记录了?

我又试过select * from student where id>=(select floor(1+rand()*1000)) order by id limit 1;基本上只返回id为100以内的一条记录,上百的压根就看不到,请问怎么写才能比较均匀的返回1~1000之间的记录呢?



SELECT * FROM student

WHERE id>=RAND()*1000

ORDER BY id

LIMIT 1;




SELECT * FROM student, (select RAND()*1000 as k) b where student.id >k order by student.id limit 1

这句简单的查询咋回事?求解释

相关文章:

你感兴趣的文章:

标签云: