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

MySQL 레코드를 무작위로 정렬하고 이름을 오름차순으로 표시

<시간/>

하위 쿼리를 사용하여 무작위로 주문하고 이름을 오름차순으로 표시할 수 있습니다. rand()는 무작위에 사용되는 반면 ORDER BY는 이름 레코드를 오름차순으로 표시하는 데 사용됩니다. 구문은 다음과 같습니다 -

select *from
(
   select *from yourTableName order by rand() limit anyIntegerValue;
) anyVariableName
order by yourColumnName;

위의 개념을 이해하기 위해 테이블을 만들어 보겠습니다. 우리는 오름차순으로 원하는 이름으로 판매되는 ID를 가지고 있습니다. 테이블을 생성하는 쿼리는 다음과 같습니다 -

mysql> create table OrderByRandName
   −> (
   −> Id int,
   −> Name varchar(100)
   −> );
Query OK, 0 rows affected (0.96 sec)

insert 명령을 사용하여 테이블의 모든 레코드를 표시합니다. 쿼리는 다음과 같습니다 -

mysql> insert into OrderByRandName values(100,'John');
Query OK, 1 row affected (0.18 sec)

mysql> insert into OrderByRandName values(101,'Bob');
Query OK, 1 row affected (0.11 sec)

mysql> insert into OrderByRandName values(102,'Johnson');
Query OK, 1 row affected (0.19 sec)

mysql> insert into OrderByRandName values(103,'David');
Query OK, 1 row affected (0.22 sec)

mysql> insert into OrderByRandName values(104,'Smith');
Query OK, 1 row affected (0.17 sec)

mysql> insert into OrderByRandName values(105,'Taylor');
Query OK, 1 row affected (0.20 sec)

mysql> insert into OrderByRandName values(106,'Sam');
Query OK, 1 row affected (0.12 sec)

mysql> insert into OrderByRandName values(107,'Robert');
Query OK, 1 row affected (0.22 sec)

mysql> insert into OrderByRandName values(108,'Michael');
Query OK, 1 row affected (0.16 sec)

mysql> insert into OrderByRandName values(109,'Mark');
Query OK, 1 row affected (0.17 sec)

select 문을 사용하여 모든 레코드를 표시합니다. 쿼리는 다음과 같습니다 -

mysql> select *from OrderByRandName;

다음은 출력입니다 -

+------+---------+
| Id   | Name    |
+------+---------+
|  100 | John    |
|  101 | Bob     |
|  102 | Johnson |
|  103 | David   |
|  104 | Smith   |
|  105 | Taylor  |
|  106 | Sam     |
|  107 | Robert  |
|  108 | Michael |
|  109 | Mark    |
+------+---------+
10 rows in set (0.00 sec)

다음은 rand()로 정렬하고 이름을 오름차순으로 표시하는 쿼리입니다. -

mysql> select *from
   −> (
   −> select *from OrderByRandName order by rand() limit 10
   −> )tbl1
   −> order by Name;

다음은 출력입니다 -

+------+---------+
| Id   | Name    |
+------+---------+
|  101 | Bob     |
|  103 | David   |
|  100 | John    |
|  102 | Johnson |
|  109 | Mark    |
|  108 | Michael |
|  107 | Robert  |
|  106 | Sam     |
|  104 | Smith   |
|  105 | Taylor  |
+------+---------+
10 rows in set (0.39 sec)