我有一个简单的问题。
当我执行“select * from table rand()”时,我得到rand#行。这是与表限制rand()中的select *相同(虽然它不起作用)?
答案 0 :(得分:2)
数据库查询中的where
子句只是一个导致true或false值的语句,因为表中的每一行都被考虑包含在结果集中。通常,T / F计算涉及查询表中的一个或多个字段,但这不是必需的。
执行... WHERE rand()
时,您基本上会获得每行0 <= N < 1
范围内的随机值。 MySQL通过将值四舍五入为0或1将其转换为布尔值。因此随机数0.5-> 0.999变为1(TRUE)和随机数0 - > 0.49999回合到0(FALSE)。
答案 1 :(得分:0)
Limit
您的MySQL查询结果在一定数量范围之间的结果。而Select * from table where rand()
搜索整个表并选择随机
答案 2 :(得分:0)
使用时
... LIMIT RAND()
你需要考虑RAND()函数的作用 - 它返回一个介于0.0和1.0之间的值 - 所以它实际上是LIMIT(0) - 你的返回结果总是为零。
http://dev.mysql.com/doc/refman/5.0/en/mathematical-functions.html#function_rand
答案 3 :(得分:0)
rand()
始终评估为0到1之间的数字。
如果在limit子句中使用它,它将不返回任何行,因为它的计算结果小于1行。
如果在where子句中使用它,它应始终求值为true,因为它总是大于1,并且将返回所有行,而不是随机行数。