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

SELECT 문에서 행 인덱스(순위)를 생성하는 MySQL 쿼리?

<시간/>

행 인덱스를 생성하려면 ROW_NUMBER()를 사용하십시오. 먼저 테이블을 생성하겠습니다 -

mysql> create table DemoTable
(
   Name varchar(40)
);
Query OK, 0 rows affected (0.49 sec)

삽입 명령을 사용하여 테이블에 일부 레코드 삽입 -

mysql> insert into DemoTable values('Chris');
Query OK, 1 row affected (0.14 sec)
mysql> insert into DemoTable values('Chris');
Query OK, 1 row affected (0.22 sec)
mysql> insert into DemoTable values('Chris');
Query OK, 1 row affected (0.10 sec)
mysql> insert into DemoTable values('Robert');
Query OK, 1 row affected (0.12 sec)
mysql> insert into DemoTable values('Robert');
Query OK, 1 row affected (0.14 sec)
mysql> insert into DemoTable values('Adam');
Query OK, 1 row affected (0.12 sec)
mysql> insert into DemoTable values('Adam');
Query OK, 1 row affected (0.22 sec)
mysql> insert into DemoTable values('Adam');
Query OK, 1 row affected (0.08 sec)
mysql> insert into DemoTable values('Adam');
Query OK, 1 row affected (0.08 sec)

select 문을 사용하여 테이블의 모든 레코드 표시 -

mysql> select *from DemoTable;

이것은 다음과 같은 출력을 생성합니다 -

+--------+
| Name   |
+--------+
| Chris  |
| Chris  |
| Chris  |
| Robert |
| Robert |
| Adam   |
| Adam   |
| Adam   |
| Adam   |
+--------+
9 rows in set (0.00 sec)

다음은 MySQL SELECT 문에서 행 인덱스를 생성하는 쿼리이다. 여기에서 중복 이름에 대한 순위를 설정했습니다. −

mysql> select Name,
row_number() over (partition by Name) as `Rank`
from DemoTable;

이것은 다음과 같은 출력을 생성합니다 -

+--------+------+
| Name   | Rank |
+--------+------+
| Adam   | 1    |
| Adam   | 2    |
| Adam   | 3    |
| Adam   | 4    |
| Chris  | 1    |
| Chris  | 2    |
| Chris  | 3    |
| Robert | 1    |
| Robert | 2    |
+--------+------+
9 rows in set (0.00 sec)