Mysql
 sql >> Base de données >  >> RDS >> Mysql

Technique Pure-SQL pour la numérotation automatique des lignes dans l'ensemble de résultats

Pour avoir un numéro de ligne significatif, vous devez ordonner vos résultats. Ensuite, vous pouvez faire quelque chose comme ceci :

SELECT id, name
    , (SELECT COUNT(*) FROM people p2 WHERE name='Spiewak' AND p2.id <= p1.id) AS RowNumber
FROM people p1
WHERE name = 'Spiewak'
ORDER BY id

Notez que la clause WHERE de la sous-requête doit correspondre à la clause WHERE ou à la clé primaire de la requête principale et le ORDER BY de la requête principale.

SQL Server a la construction ROW_NUMBER() OVER pour simplifier cela, mais je ne sais pas si MySQL a quelque chose de spécial pour y remédier.

Étant donné que mon message ici a été accepté comme réponse, je souhaite également appeler la réponse de Dan Goldstein, qui est très similaire dans son approche mais utilise un JOIN au lieu d'une sous-requête et sera souvent plus performant