Ответ 1
select @rownum:[email protected]+1 No, foo, bar from table, (SELECT @rownum:=0) r;
У меня есть простой запрос:
SELECT foo, bar FROM table
Я думаю, теперь вы видите, как выглядит результат.
Что я хочу сделать, так это показать некоторый последовательный номер, основанный на том, сколько данных появляется из результата запроса. его просто как AUTO_INCREMENT
(его не значит, что я хочу показать ID).
Результат, который я хочу, похож:
|No| foo | bar |
-------------------------
|1 | bla | 123 |
|2 | boo | abc |
|3 | wow | xxx |
Как мне сделать это?
заблаговременно
select @rownum:[email protected]+1 No, foo, bar from table, (SELECT @rownum:=0) r;
Порядок получает скремблирование, если вы используете предложение GROUP BY
в своем запросе. Работа вокруг помещает ваш запрос в предложение FROM
, подобное этому.
SET @a:=0;
SELECT @a:[email protected]+1 No, output.*
FROM (
SELECT foo, bar
FROM table GROUP BY foo, bar
) output;
Ни один из ответов не работал у меня, но на основе bungdito source, я понял, что вы можете сделать что-то проще:
SET @a:=0;
SELECT @a:[email protected]+1 No, foo, bar
FROM table;
Итак, сначала убедитесь, что выполняется SET @a:=0;
. Это создаст вашу переменную a. Затем вы можете увеличить его в результатах с помощью @a:[email protected]+1
. Я тестировал это с помощью GROUP BY, ORDER BY, даже JOINS, и он работал, как ожидалось.
Если кто-то хочет отобразить номер строки после упорядочивания записей, что-то подобное может сработать
set @a=0;
select @a:[email protected]+1 serial_number,t.*
from ( SELECT foo, bar FROM tableORDER BY bar ) t