2011-04-24 36 views
2

我有一個簡單的問題。select * from rand()如何工作?

當我執行「Select * from table where rand()」時,我得到rand#的行數。這與select * from table limit rand()(它雖然不工作)是一樣的嗎?

回答

2

一個where條款僅僅是導致真或假值表中的每一行正在考慮將其納入結果集的語句。通常,T/F計算涉及查詢表中的一個或多個字段,但這不是要求。

當你做... WHERE rand(),你基本上得到一個隨機值在範圍0 <= N < 1爲每一行。 MySQL通過將該值舍入爲0或1來將其轉換爲布爾值。因此,隨機數0.5-> 0.999變爲1(真),隨機數0-> 0.49999舍入爲0(假)。

+0

正是我所期待的!謝謝!! – Moon 2011-04-24 03:32:33

0

Limit您的MySQL查詢結果在一定數量範圍內的結果。而Select * from table where rand()搜索整個表並選擇在數據庫中查詢隨機

+0

//對,但我的問題是「select * from table where rand()」每次執行查詢時生成隨機行數? – Moon 2011-04-24 03:26:54

+0

它的隨機! ..隨機算法將幫助你 - > http://en.wikipedia.org/wiki/Randomized_algorithm – Sudantha 2011-04-24 03:31:03

0

rand()始終計算爲一個數字0和1之間

如果在限制子句中使用它,它會返回行,因爲它的計算結果小於1點的行。

如果在where子句中使用它,它總是應該計算爲true,因爲它總是大於1,並且將返回所有行,而不是隨機數的行。

相關問題