항목을 정렬하면 select 문을 실행하고 행 번호를 얻을 수 있습니까?
나는 이와 같은 테이블을 가지고있다 :
mysql> describe orders;
+-------------+---------------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+-------------+---------------------+------+-----+---------+----------------+
| orderID | bigint(20) unsigned | NO | PRI | NULL | auto_increment |
| itemID | bigint(20) unsigned | NO | | NULL | |
+-------------+---------------------+------+-----+---------+----------------+
그런 다음이 쿼리를 실행하여 ID별로 주문 수를 얻을 수 있습니다.
SELECT itemID, COUNT(*) as ordercount
FROM orders
GROUP BY itemID ORDER BY ordercount DESC;
이것은 나에게 다음 itemID
과 같이 테이블에서 각각의 수를 제공 합니다.
+--------+------------+
| itemID | ordercount |
+--------+------------+
| 388 | 3 |
| 234 | 2 |
| 3432 | 1 |
| 693 | 1 |
| 3459 | 1 |
+--------+------------+
나는 또한 행 번호를 얻고 싶습니다. 그래서 itemID=388
첫 번째 행, 234
두 번째 등 이라고 말할 수 있습니다 (실제로 카운트가 아닌 주문의 순위). 결과 세트를 다시 가져올 때 Java 로이 작업을 수행 할 수 있다는 것을 알고 있지만 SQL에서 순수하게 처리 할 수있는 방법이 있는지 궁금합니다.
최신 정보
순위를 설정하면 순위가 결과 집합에 추가되지만 제대로 정렬되지 않습니다.
mysql> SET @rank=0;
Query OK, 0 rows affected (0.00 sec)
mysql> SELECT @rank:=@rank+1 AS rank, itemID, COUNT(*) as ordercount
-> FROM orders
-> GROUP BY itemID ORDER BY rank DESC;
+------+--------+------------+
| rank | itemID | ordercount |
+------+--------+------------+
| 5 | 3459 | 1 |
| 4 | 234 | 2 |
| 3 | 693 | 1 |
| 2 | 3432 | 1 |
| 1 | 388 | 3 |
+------+--------+------------+
5 rows in set (0.00 sec)
의 가능한 중복 MySQL은 ROW_NUMBER ()
—
치로 틸리郝海东冠状病六四事件法轮功
ORDER BY rank ASC
주문 하려면 (오름차순으로 순위 순으로)를 사용하십시오. 나는 당신이 무엇을 의미하는 것 같다 하지만 제대로 주문