Как показать последовательный номер в результате запроса MySQL

У меня есть простой запрос:

SELECT foo, bar FROM table

Я думаю, теперь вы видите, как выглядит результат.

Что я хочу сделать, так это показать некоторый последовательный номер, основанный на том, сколько данных появляется из результата запроса. его просто как AUTO_INCREMENT (его не значит, что я хочу показать ID). Результат, который я хочу, похож:

|No|   foo   |    bar   |
-------------------------
|1 |   bla   |    123   |
|2 |   boo   |    abc   |
|3 |   wow   |    xxx   |

Как мне сделать это?

заблаговременно

Ответ 1

select @rownum:[email protected]+1 No, foo, bar from table, (SELECT @rownum:=0) r;

Ответ 2

Порядок получает скремблирование, если вы используете предложение GROUP BY в своем запросе. Работа вокруг помещает ваш запрос в предложение FROM, подобное этому.

SET @a:=0;
SELECT @a:[email protected]+1 No, output.*
FROM (
     SELECT foo, bar
     FROM table GROUP BY foo, bar
 ) output;

Ответ 3

Ни один из ответов не работал у меня, но на основе 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, и он работал, как ожидалось.

Ответ 4

Если кто-то хочет отобразить номер строки после упорядочивания записей, что-то подобное может сработать

set @a=0; 
select @a:[email protected]+1 serial_number,t.* 
from ( SELECT foo, bar FROM tableORDER BY bar ) t