sql >> Base de Datos >  >> RDS >> Mysql

Técnica Pure-SQL para la numeración automática de filas en el conjunto de resultados

Para tener un número de fila significativo, debe ordenar sus resultados. Entonces puedes hacer algo como esto:

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

Tenga en cuenta que la cláusula WHERE de la consulta secundaria debe coincidir con la cláusula WHERE o la clave principal de la consulta principal y el ORDEN POR de la consulta principal.

SQL Server tiene la construcción ROW_NUMBER() OVER para simplificar esto, pero no sé si MySQL tiene algo especial para solucionarlo.

Dado que mi publicación aquí fue aceptada como la respuesta, también quiero mencionar la respuesta de Dan Goldstein, que tiene un enfoque muy similar pero usa JOIN en lugar de una subconsulta y, a menudo, tendrá un mejor rendimiento