2013-02-14 16 views
27

Có một bảng lớn và tôi muốn thêm cột có số được chọn ngẫu nhiên cho mỗi bản ghi. 1, 2 hoặc 3.Cập nhật MySQL với số ngẫu nhiên từ 1-3

Gặp khó khăn. Bất kỳ ý tưởng?

+5

[Bạn đã thử gì? ] (http://www.whathaveyoutried.com/) Xem [hỏi lời khuyên] (http://stackoverflow.com/questions/ask-advice). –

+0

http://stackoverflow.com/questions/6550155/mysql-get-a-random-value-between-two-values ​​ – sgeddes

+0

Bạn chưa thử 'UPDATE' và' RAND() '? – tadman

Trả lời

98

Hãy thử điều này:

UPDATE tableName SET columnName = FLOOR(1 + RAND() *3); 

Từ MySQL documentation cho RAND:

Trả về một ngẫu nhiên dấu chấm động giá trị v trong khoảng 0 < = v < 1.0.

Vì vậy trong truy vấn trên, giá trị lớn nhất mà có thể được tạo ra bởi 1 + RAND()*3 sẽ 3.999999, có khi rối trí sẽ cung cấp giá trị nhỏ 3. sẽ xảy ra khi RAND() lợi nhuận 0, trong trường hợp này sẽ cung cấp cho 1.

-3

Do

UPDATE tableName SET columnName = FLOOR(RAND() + RAND()); 
0

Sử dụng RAND() chức năng này. Nó trả về một giá trị dấu phẩy động ngẫu nhiên v trong phạm vi 0 <= v < 1.0. Để có được số nguyên ngẫu nhiên R trong phạm vi i <= R < j, hãy sử dụng cụm từ FLOOR(i + RAND() * (j − i)). Ví dụ, để có được một số nguyên ngẫu nhiên trong phạm vi dải 1<= R < 3, sử dụng câu lệnh sau:

UPDATE tableName 
SET ColumnName= FLOOR(1 + rand() * 3); 

NB:RAND() sản xuất giá trị float ngẫu nhiên từ 0 đến 1.