sql >> Database >  >> RDS >> Mysql

Pure-SQL-techniek voor het automatisch nummeren van rijen in de resultatenset

Om een ​​zinvol rijnummer te hebben, moet u uw resultaten ordenen. Dan kun je zoiets als dit doen:

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

Merk op dat de WHERE-component van de subquery moet overeenkomen met de WHERE-component of de primaire sleutel van de hoofdquery en de ORDER BY van de hoofdquery.

SQL Server heeft de constructie ROW_NUMBER() OVER om dit te vereenvoudigen, maar ik weet niet of MySQL iets speciaals heeft om dit aan te pakken.

Aangezien mijn bericht hier als het antwoord werd geaccepteerd, wil ik ook het antwoord van Dan Goldstein noemen, dat qua benadering erg op elkaar lijkt, maar een JOIN gebruikt in plaats van een subquery en vaak beter zal presteren



  1. SQL-tijdsverschil binnen enkele tabel

  2. Laravel geneste relaties

  3. Hoe de huidige datumnotatie in SQL Server (T-SQL) te wijzigen

  4. Op afstand verbinding maken met MySQL