BMS-HOSxP Community
HOSxP => แจ้งปัญหา / ขอความช่วยเหลือ => ข้อความที่เริ่มโดย: arr_012 ที่ กุมภาพันธ์ 01, 2011, 14:11:01 PM
-
select *from vn_stat
order by rand(10)
กับ
select *from vn_stat
order by rand()
มันต่างกันตรงไหนครับ
-
select *from vn_stat
order by rand(10)
กับ
select *from vn_stat
order by rand()
มันต่างกันตรงไหนครับ
select *from vn_stat
order by rand(10)
เวลารันคำสั่งนี้แต่ละรอบค่าจะเหมือนเดิม
select *from vn_stat
order by rand()
เวลารันคำสั่งนี้แต่ละรอบค่าจะไม่เหมือนกัน
แต่อย่าลืม Limit นะครับ ลองกด run หลาย ๆ รอบดูจะเห็นความแตกต่างครับ
-
อ่านอันนี้เพิ่มเติมน่าจะเข้าขึ้นนะครับ (หรือมึนขึ้นกว่าเดิม เพราะผมก็มึน) ;D ;D ;D
RAND(), RAND(N)
Returns a random floating-point value v in the range 0 <= v < 1.0. If a constant integer argument N is specified, it is used as the seed value, which produces a repeatable sequence of column values. In the following example, note that the sequences of values produced by RAND(3) is the same both places where it occurs.
mysql> CREATE TABLE t (i INT);
Query OK, 0 rows affected (0.42 sec)
mysql> INSERT INTO t VALUES(1),(2),(3);
Query OK, 3 rows affected (0.00 sec)
Records: 3 Duplicates: 0 Warnings: 0
mysql> SELECT i, RAND() FROM t;
+------+------------------+
| i | RAND() |
+------+------------------+
| 1 | 0.61914388706828 |
| 2 | 0.93845168309142 |
| 3 | 0.83482678498591 |
+------+------------------+
3 rows in set (0.00 sec)
mysql> SELECT i, RAND(3) FROM t;
+------+------------------+
| i | RAND(3) |
+------+------------------+
| 1 | 0.90576975597606 |
| 2 | 0.37307905813035 |
| 3 | 0.14808605345719 |
+------+------------------+
3 rows in set (0.00 sec)
mysql> SELECT i, RAND() FROM t;
+------+------------------+
| i | RAND() |
+------+------------------+
| 1 | 0.35877890638893 |
| 2 | 0.28941420772058 |
| 3 | 0.37073435016976 |
+------+------------------+
3 rows in set (0.00 sec)
mysql> SELECT i, RAND(3) FROM t;
+------+------------------+
| i | RAND(3) |
+------+------------------+
| 1 | 0.90576975597606 |
| 2 | 0.37307905813035 |
| 3 | 0.14808605345719 |
+------+------------------+
3 rows in set (0.01 sec)
The effect of using a nonconstant argument is undefined. As of MySQL 5.0.13, nonconstant arguments are not permitted.
To obtain a random integer R in the range i <= R < j, use the expression FLOOR(i + RAND() * (j – i)). For example, to obtain a random integer in the range the range 7 <= R < 12, you could use the following statement:
http://dev.mysql.com/doc/refman/5.0/en/mathematical-functions.html#function_rand (http://dev.mysql.com/doc/refman/5.0/en/mathematical-functions.html#function_rand)
-
select *from vn_stat
order by rand(10)
กับ
select *from vn_stat
order by rand()
มันต่างกันตรงไหนครับ
select *from vn_stat
order by rand(10)
เวลารันคำสั่งนี้แต่ละรอบค่าจะเหมือนเดิม
select *from vn_stat
order by rand()
เวลารันคำสั่งนี้แต่ละรอบค่าจะไม่เหมือนกัน
แต่อย่าลืม Limit นะครับ ลองกด run หลาย ๆ รอบดูจะเห็นความแตกต่างครับ
แล้วตัวเลขใน rand(?) มันคือค่าอะไรครับ
-
rand(N)
If a constant integer argument N is specified, it is used as the seed value, which produces a repeatable sequence of column values.
มันคือค่าที่ใส่เข้าไปแล้วจะทำให้ลำดับของคอลัมเหมือนเดิมในการ query แต่ละครั้ง
แต่ค่าที่ return ออกมาจากฟังก์ชัน rand(N) ไม่รู้ว่าคำนวณยังไงครับ ;D ;D