нумерация строк с помощью ORDER BY - PullRequest
2 голосов
/ 06 декабря 2011
SELECT @row := @row + 1 AS row, t.*
FROM some_table t, (SELECT @row := 0) r
ORDER BY t.title

Я хочу пронумеровать строки таблицы, а также отсортировать их по ORDER BY.

Когда я использую ORDER BY, пользовательская переменная @row не 1,2,3 из-за ORDER BY. Как выбрать строки с ORDER BY и иметь правильную нумерацию?

Ответы [ 3 ]

3 голосов
/ 06 декабря 2011
SELECT @rank:=@rank+1 rank FROM some_table t, (SELECT @rank:=0) r order by @rank

или

упорядочение по любому другому полю

SELECT @rank:=@rank+1 rank FROM some_table t, (SELECT @rank:=0) r order by id desc
1 голос
/ 06 декабря 2011
select @row := @row + 1 as row,t.* from (
select * from some_table,(select @row:=0) as r order by title) as t
0 голосов
/ 06 декабря 2011

Сначала необходимо предварительно вернуть набор результатов RANKED, ТО затем присвоить ему номер строки

SELECT @row := @row + 1 AS row, 
       PreQuery.*
   FROM 
      ( select t.*
           from Some_Table t
           order by t.title ) PreQuery,
      (SELECT @row := 0) r

Единственная проблема с этим в том, что он в основном проходит по таблице 2 раза ... сначала, чтобы получить записи в правильном порядке, затем применить их, присоединенные к реализации @row, чтобы правильно соотнести с соответствующими ранга.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...