>데이터 베이스 >MySQL 튜토리얼 >MySQL에서 정렬된 데이터에 행 번호를 추가하는 방법은 무엇입니까?

MySQL에서 정렬된 데이터에 행 번호를 추가하는 방법은 무엇입니까?

Susan Sarandon
Susan Sarandon원래의
2025-01-21 23:56:10570검색

How to Add Row Numbers to Sorted Data in MySQL?

MySQL에서 정렬된 데이터의 행 번호 추가

MySQL에서 정렬된 데이터로 작업할 때 각 레코드의 행 번호를 가져오면 제공되는 정보가 향상되고 보다 자세한 분석이 용이해집니다. 이 기사에서는 순수 SQL을 사용하여 이를 달성하는 방법을 살펴보고 Java 또는 기타 프로그래밍 언어에서 사후 처리를 방지하는 솔루션을 제공합니다.

데이터베이스 테이블 구조

필드가 "orderID" 및 "itemID"인 "orders"라는 다음 테이블을 살펴보세요.

<code class="language-sql">mysql> describe orders;
+-------------+---------------------+------+-----+---------+----------------+
| Field       | Type                | Null | Key | Default | Extra          |
+-------------+---------------------+------+-----+---------+----------------+
| orderID     | bigint(20) unsigned | NO   | PRI | NULL    | auto_increment |
| itemID      | bigint(20) unsigned | NO   |     | NULL    |                |
+-------------+---------------------+------+-----+---------+----------------+</code>

원래 쿼리

처음에는 쿼리를 사용하여 각 itemID의 주문 수를 가져옵니다.

<code class="language-sql">SELECT itemID, COUNT(*) as ordercount
FROM orders
GROUP BY itemID ORDER BY ordercount DESC;</code>

줄번호 추가

행 번호를 추가하려면 다음과 같이 쿼리를 수정하면 됩니다.

<code class="language-sql">SET @rank=0;
SELECT @rank:=@rank+1 AS rank, itemID, COUNT(*) as ordercount
FROM orders
GROUP BY itemID
ORDER BY ordercount DESC;
SELECT @rank;</code>

설명

  • SET @rank=0;: 사용자 정의 변수 @rank를 0으로 초기화하여 행 번호에 대한 카운터 역할을 합니다.
  • SELECT @rank:=@rank 1 AS 순위, itemID, COUNT(*) as ordercount: 쿼리의 이 부분은 다음을 수행합니다.
    • 각 행에 대해 @rank를 1씩 증가시키고 결과의 "순위" 열에 새 값을 할당합니다.
    • 원래 쿼리의 'itemID' 및 'ordercount' 열을 유지합니다.
  • ORDER BY ordercount DESC: 이 절은 행이 "ordercount" 필드를 기준으로 내림차순으로 정렬되도록 합니다.
  • SELECT @rank: 마지막 SELECT 문은 결과 집합의 총 행 수를 나타내는 @rank의 최종 값을 검색합니다.

향상된 결과

수정된 쿼리를 실행하면 다음과 같은 향상된 결과가 제공됩니다.

<code>+------+--------+------------+
| rank | itemID | ordercount |
+------+--------+------------+
| 1    | 388    | 3          |
| 2    | 234    | 2          |
| 3    | 3432   | 1          |
| 4    | 693    | 1          |
| 5    | 3459   | 1          |
+------+--------+------------+</code>

보시다시피 이제 각 행에는 정렬된 결과 집합에서의 위치를 ​​나타내는 추가 "순위" 열이 있습니다.

위 내용은 MySQL에서 정렬된 데이터에 행 번호를 추가하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.