sql >> Databasteknik >  >> RDS >> Mysql

Pure-SQL-teknik för automatisk numrering av rader i resultatuppsättning

För att få ett meningsfullt radnummer måste du beställa dina resultat. Då kan du göra något så här:

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

Observera att WHERE-satsen i underfrågan måste matcha WHERE-satsen eller primärnyckeln från huvudfrågan och ORDER BY för huvudfrågan.

SQL Server har ROW_NUMBER() OVER-konstruktionen för att förenkla detta, men jag vet inte om MySQL har något speciellt att åtgärda det.

Eftersom mitt inlägg här accepterades som svaret, vill jag också ropa ut Dan Goldsteins svar, som är väldigt likt tillvägagångssätt men använder en JOIN istället för en underfråga och kommer ofta att prestera bättre



  1. Hur importerar man en csv-fil till MySQL-arbetsbänken?

  2. 5 måste-känna fördelar med Microsoft Access

  3. hur man hittar första och sista posten från mysql-tabellen

  4. Infoga CLOB i Oracle-databasen