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

Pure-SQL-teknik til automatisk nummerering af rækker i resultatsæt

For at have et meningsfuldt rækkenummer skal du bestille dine resultater. Så kan du gøre sådan noget:

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

Bemærk, at WHERE-udtrykket i underforespørgslen skal matche WHERE-udtrykket eller primærnøglen fra hovedforespørgslen og ORDER BY for hovedforespørgslen.

SQL Server har ROW_NUMBER() OVER-konstruktionen for at forenkle dette, men jeg ved ikke, om MySQL har noget særligt at løse det.

Da mit indlæg her blev accepteret som svaret, vil jeg også fremhæve Dan Goldsteins svar, som er meget ens i tilgangen, men som bruger en JOIN i stedet for en underforespørgsel og ofte vil yde bedre



  1. Sjovt med (columnstore) komprimering på et meget stort bord – del 1

  2. Tilslutning af Linux og UNIX til Azure SQL Data Warehouse

  3. Kan ikke installere pg gem på Mountain Lion

  4. Forbind SQL Server til HubSpot CRM