Mysql
 sql >> база данни >  >> RDS >> Mysql

Pure-SQL техника за автоматично номериране на редове в набор от резултати

За да имате смислен номер на ред, трябва да подредите резултатите си. След това можете да направите нещо подобно:

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

Обърнете внимание, че клаузата WHERE на подзаявката трябва да съвпада с клаузата WHERE или първичния ключ от основната заявка и ORDER BY на основната заявка.

SQL Server има конструкцията ROW_NUMBER() OVER, за да опрости това, но не знам дали MySQL има нещо специално за справяне с него.

Тъй като публикацията ми тук беше приета като отговор, искам също да извикам отговора на Дан Голдщайн, който е много подобен по подход, но използва JOIN вместо подзаявка и често ще работи по-добре



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Как да модифицирате PHP/Jquery/Ajax скрипт, за да има повече от едно поле за формуляр postst

  2. Изпълнение на миграции с Rails в Docker контейнер с множество екземпляри на контейнера

  3. Как да получите последно въведен идентификатор от таблицата MySQL

  4. пренаписване на мода, заглавия и htaccess

  5. Как да вмъкна колони на конкретна позиция в съществуваща таблица?