Computer >> Máy Tính >  >> Lập trình >> MySQL

Đặt hàng ngẫu nhiên trong MySQL với một cột giá trị ngẫu nhiên?

Đầu tiên chúng ta hãy tạo một bảng. Sau đó, chúng tôi sẽ tạo một cột giá trị ngẫu nhiên mới và đặt hàng ở đó một cách ngẫu nhiên:

mysql> create table DemoTable
(
   StudentId int NOT NULL AUTO_INCREMENT PRIMARY KEY,
   StudentName varchar(20)
);
Query OK, 0 rows affected (0.57 sec)

Sau đây là truy vấn để chèn một số bản ghi trong bảng bằng cách sử dụng lệnh insert:

mysql> insert into DemoTable(StudentName) values('Larry');
Query OK, 1 row affected (0.20 sec)
mysql> insert into DemoTable(StudentName) values('Sam');
Query OK, 1 row affected (0.14 sec)
mysql> insert into DemoTable(StudentName) values('Mike');
Query OK, 1 row affected (0.34 sec)
mysql> insert into DemoTable(StudentName) values('Carol');
Query OK, 1 row affected (0.13 sec)
mysql> insert into DemoTable(StudentName) values('Robert');
Query OK, 1 row affected (0.14 sec)
mysql> insert into DemoTable(StudentName) values('Chris');
Query OK, 1 row affected (0.14 sec)

Sau đây là truy vấn để hiển thị các bản ghi từ bảng bằng cách sử dụng câu lệnh select:

mysql> select *from DemoTable;

Điều này sẽ tạo ra kết quả sau

+-----------+-------------+
| StudentId | StudentName |
+-----------+-------------+
|         1 | Larry       |
|         2 | Sam         |
|         3 | Mike        |
|         4 | Carol       |
|         5 | Robert      |
|         6 | Chris       |   
+-----------+-------------+
6 rows in set (0.00 sec)

Đây là truy vấn để sắp xếp theo các trường ngẫu nhiên. Chúng tôi đã tạo một trường ngẫu nhiên mới tại đây:

mysql> SELECT *
FROM (SELECT StudentName, RAND()+1 AS randomRecord
FROM DemoTable
) tbl
ORDER BY RandomRecord DESC;

Điều này sẽ tạo ra kết quả sau

+-------------+--------------------+
| StudentName | RandomRecord       |
+-------------+--------------------+
| Carol       | 1.8973721451101566 |
| Chris       | 1.7821308670399065 |
| Mike        | 1.4640037673190271 |
| Larry       | 1.4134691557041081 |
| Sam         | 1.1408822407395414 |
| Robert      | 1.0948494543273461 |
+-------------+--------------------+
6 rows in set (0.00 sec)