开发者

How does select * from table rand() work?

开发者 https://www.devze.com 2023-02-28 14:20 出处:网络
I have a simple question. When I execute \"Select * from table where rand()\", I get rand # of rows. Is this same as select * from table limit rand() (it does not开发者_Python百科 work though) ?A whe

I have a simple question.

When I execute "Select * from table where rand()", I get rand # of rows. Is this same as select * from table limit rand() (it does not开发者_Python百科 work though) ?


A where clause in a database query is simply a statement that results in a true or false value as each row in the table is being considered for inclusion in the result set. Generally that T/F calculation involves one or more fields from the table being queried, but it's not a requirement.

When you do ... WHERE rand(), you're basically getting a random value in the range 0 <= N < 1 for each row. MySQL casts that to a boolean by rounding the value to 0 or 1. So a random number 0.5->0.999 becomes 1 (TRUE) and a random number 0 -> 0.49999 rounds to 0 (FALSE).


Limit the results of your MySQL query to results between a certain number range. while Select * from table where rand() search the whole table and select a random


When you use

... LIMIT RAND()

You need to consider what the RAND() function does - it returns a value between 0.0 and 1.0 - so it's effectively LIMIT(0) - you'll always have zero return results.

http://dev.mysql.com/doc/refman/5.0/en/mathematical-functions.html#function_rand


rand() always evaluates to a number between 0 and 1.

If you use it in a limit clause, it will return no rows, because it evaluates to less than 1 row.

If you use it in the where clause, it should always evaluate to true, as it is always greater than 1, and will return all rows, not a random number of rows.

0

精彩评论

暂无评论...
验证码 换一张
取 消