Этот вопрос задал много вопросов о Stackoverflow, но я столкнулся с чем-то другим.номер строки в порядке возрастания MySQL
SET @rownum = 0;
SELECT DISTINCT doc.id,
doc.created_date,
(@rownum := @rownum + 1) AS rownumbers
FROM document AS doc
INNER JOIN document_type_master dt
ON doc.document_type_id = dt.id
ORDER BY doc.id ASC;
Вышеуказанный запрос дает мне следующий результат.
id created_date rownumbers
5664 2014-06-05 07:23:40 1
5665 2014-06-06 06:37:34 2
5666 2014-06-06 10:25:56 3
5667 2014-06-06 10:33:39 4
5668 2014-06-06 11:28:28 5
Если изменить ORDER BY doc.id ASC
к ORDER BY doc.id DESC
затем выход
id created_date rownumbers
6364 2014-11-11 17:57:04 691
6363 2014-11-11 11:09:49 690
6362 2014-11-11 10:58:34 689
6361 2014-11-10 17:39:47 688
6360 2014-11-10 16:59:53 687
Я экспериментировал несколько вещей, и считаю, что если удалить DISTINCT
из моего запроса, то rownumbers
запускается из 1,2,3...
в случае ORDER BY doc.id DESC
.
id created_date rownumbers
6364 2014-11-11 17:57:04 1
6363 2014-11-11 11:09:49 2
6362 2014-11-11 10:58:34 3
6361 2014-11-10 17:39:47 4
6360 2014-11-10 16:59:53 5
Я также попытался дающую заказ на rownumbers
как ORDER BY doc.id DESC, rownumbers ASC
, но не работает для меня.
Я хочу rownumbers
значение всегда должно быть в ASC
заказ независимо от того, как я пользуюсь DISTINCT
или нет.
Update
@Barmar является правильным, но если я использую rownumbers
в WHERE
статье как
rownumbers between 1 and 5
то есть показывает ошибку Error Code: 1054. Unknown column 'rownumbers' in 'where clause'
То же, что и выход 2 –