我有一個簡單的問題。select * from rand()如何工作?
當我執行「Select * from table where rand()」時,我得到rand#的行數。這與select * from table limit rand()(它雖然不工作)是一樣的嗎?
我有一個簡單的問題。select * from rand()如何工作?
當我執行「Select * from table where rand()」時,我得到rand#的行數。這與select * from table limit rand()(它雖然不工作)是一樣的嗎?
一個where
條款僅僅是導致真或假值表中的每一行正在考慮將其納入結果集的語句。通常,T/F計算涉及查詢表中的一個或多個字段,但這不是要求。
當你做... WHERE rand()
,你基本上得到一個隨機值在範圍0 <= N < 1
爲每一行。 MySQL通過將該值舍入爲0或1來將其轉換爲布爾值。因此,隨機數0.5-> 0.999變爲1(真),隨機數0-> 0.49999舍入爲0(假)。
當您使用
... LIMIT RAND()
你需要考慮RAND()函數所做的 - 它返回在0.0和1.0之間的值 - 所以它是有效的限制(0) - 你總能回零結果。
http://dev.mysql.com/doc/refman/5.0/en/mathematical-functions.html#function_rand
rand()
始終計算爲一個數字0和1之間
如果在限制子句中使用它,它會返回行,因爲它的計算結果小於1點的行。
如果在where子句中使用它,它總是應該計算爲true,因爲它總是大於1,並且將返回所有行,而不是隨機數的行。
正是我所期待的!謝謝!! – Moon 2011-04-24 03:32:33