Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Technika czystego SQL dla automatycznego numerowania wierszy w zestawie wyników

Aby mieć sensowny numer wiersza, musisz uporządkować wyniki. Następnie możesz zrobić coś takiego:

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

Zwróć uwagę, że klauzula WHERE zapytania podrzędnego musi być zgodna z klauzulą ​​WHERE lub kluczem podstawowym zapytania głównego i ORDER BY głównego zapytania.

SQL Server ma konstrukcję ROW_NUMBER() OVER, aby to uprościć, ale nie wiem, czy MySQL ma coś specjalnego do rozwiązania tego problemu.

Ponieważ mój post tutaj został zaakceptowany jako odpowiedź, chcę również wywołać odpowiedź Dana Goldsteina, która jest bardzo podobna w podejściu, ale używa JOIN zamiast zapytania podrzędnego i często działa lepiej



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Zamów według COUNT za wartość

  2. Konwertowanie tabeli MySQL z nieprawidłowo zakodowanymi danymi do UTF-8

  3. Jak przywrócić zrzut MySQL z hosta do kontenera Docker

  4. Skonfiguruj serwer pocztowy do pracy z PHP

  5. MySQL CAST vs CONVERT