Mysql
 sql >> Database >  >> RDS >> Mysql

Tecnica Pure-SQL per la numerazione automatica delle righe nel set di risultati

Per avere un numero di riga significativo è necessario ordinare i risultati. Quindi puoi fare qualcosa del genere:

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

Si noti che la clausola WHERE della sottoquery deve corrispondere alla clausola WHERE o alla chiave primaria della query principale e l'ORDINE PER della query principale.

SQL Server ha il costrutto ROW_NUMBER() OVER per semplificarlo, ma non so se MySQL ha qualcosa di speciale per affrontarlo.

Poiché il mio post qui è stato accettato come risposta, voglio anche richiamare la risposta di Dan Goldstein, che è molto simile nell'approccio ma utilizza un JOIN invece di una sottoquery e spesso funzionerà meglio