Computer >> 컴퓨터 >  >> 프로그램 작성 >> MySQL

임의의 값 열이 있는 MySQL에서 무작위로 주문하시겠습니까?

<시간/>

먼저 테이블을 생성해 보겠습니다. 그런 다음 새 임의 값 열을 만들고 무작위로 레코드를 정렬합니다.

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

다음은 삽입 명령을 사용하여 테이블에 일부 레코드를 삽입하는 쿼리입니다.

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)

다음은 select 문을 사용하여 테이블의 레코드를 표시하는 쿼리입니다.

mysql> select *from DemoTable;

그러면 다음과 같은 출력이 생성됩니다.

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

다음은 임의의 필드를 기준으로 정렬하는 쿼리입니다. 여기에 새로운 임의의 필드를 만들었습니다:

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

그러면 다음과 같은 출력이 생성됩니다.

+-------------+--------------------+
| 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)