sql >> Databáze >  >> RDS >> Mysql

Technika Pure-SQL pro automatické číslování řádků v sadě výsledků

Chcete-li mít smysluplné číslo řádku, musíte si výsledky seřadit. Pak můžete udělat něco takového:

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

Pamatujte, že klauzule WHERE dílčího dotazu musí odpovídat klauzuli WHERE nebo primárnímu klíči z hlavního dotazu a ORDER BY hlavního dotazu.

SQL Server má konstrukci ROW_NUMBER() OVER, která to zjednodušuje, ale nevím, jestli má MySQL něco speciálního, co by to řešilo.

Protože můj příspěvek zde byl přijat jako odpověď, chci také upozornit na odpověď Dana Goldsteina, která je svým přístupem velmi podobná, ale místo dílčího dotazu používá JOIN a často bude fungovat lépe



  1. Hibernace je pomalá pro získání připojení Postgres

  2. Vytvořte entitu místnosti pro tabulku, která má pole s datovým typem LONG ve Sqlite

  3. Jak získám funkci SUM v MySQL, aby vrátila '0', pokud nebyly nalezeny žádné hodnoty?

  4. ORA-06502:PL/SQL:numerická nebo hodnotová chyba:vyrovnávací paměť znakového řetězce je příliš malá