Ajouter des numéros de ligne pour les données triées dans MySQL
Lorsque vous travaillez avec des données triées dans MySQL, obtenir le numéro de ligne de chaque enregistrement peut améliorer les informations fournies et faciliter une analyse plus détaillée. Cet article explique comment y parvenir en utilisant du SQL pur, en fournissant une solution qui évite le post-traitement en Java ou dans d'autres langages de programmation.
Structure des tables de base de données
Considérez le tableau suivant nommé « commandes » avec les champs « orderID » et « itemID » :
mysql> describe orders; +-------------+---------------------+------+-----+---------+----------------+ | Field | Type | Null | Key | Default | Extra | +-------------+---------------------+------+-----+---------+----------------+ | orderID | bigint(20) unsigned | NO | PRI | NULL | auto_increment | | itemID | bigint(20) unsigned | NO | | NULL | | +-------------+---------------------+------+-----+---------+----------------+
Requête originale
Dans un premier temps, utilisez la requête pour obtenir le nombre de commandes pour chaque ID d'article :
SELECT itemID, COUNT(*) as ordercount FROM orders GROUP BY itemID ORDER BY ordercount DESC;
Ajouter un numéro de ligne
Afin d'ajouter le numéro de ligne, vous pouvez modifier la requête comme suit :
SET @rank=0; SELECT @rank:=@rank+1 AS rank, itemID, COUNT(*) as ordercount FROM orders GROUP BY itemID ORDER BY ordercount DESC; SELECT @rank;
Description
Résultats améliorés
L'exécution de la requête modifiée fournira les résultats améliorés suivants :
<code>+------+--------+------------+ | rank | itemID | ordercount | +------+--------+------------+ | 1 | 388 | 3 | | 2 | 234 | 2 | | 3 | 3432 | 1 | | 4 | 693 | 1 | | 5 | 3459 | 1 | +------+--------+------------+</code>
Comme vous pouvez le voir, chaque ligne a désormais une colonne « rang » supplémentaire indiquant sa position dans l'ensemble de résultats triés.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!