Добавить столбец с числовым номером в возвращаемый запрос MySQL

Я пытаюсь получить столбец последовательного числа, возвращенный с моим SQL-запросом. Мне нужно, чтобы это было внутри оператора SELECT, потому что я хочу вложить этот запрос в другой, а затем использовать столбец, сгенерированный ранее, для дальнейших вычислений.

Я везде искал, и я не могу найти примеров этого.

Что-то в виду следующего:

SELECT *, ROW_NUMBER() as row_number from my_awesome_table; 

Это должно создать что-то вроде этого:

 row_number some_column some_other_column ---------- ----------- ----------------- 1 bla bla bla bla bla 2 bla bla bla bla bla 3 bla bla bla bla bla 4 bla bla bla bla bla 

Обратите внимание, что some_column и some_other_column являются реальными существующими столбцами в my_awesome_table, тогда как row_number генерируется «на лету» только для этого запроса.

Благодаря! свинья

Related of "Добавить столбец с числовым номером в возвращаемый запрос MySQL"

Вам нужно использовать переменные пользователя MySQL . Возьмем переменную t1 . Инициализируйте его на 0 . И увеличивайте его в каждом выбранном значении.

 SET @t1=0; SELECT @t1 := @t1+1 as row_number, my_awesome_table.* from my_awesome_table 

Это сделает трюк.

Мой любимый способ сделать то, что предложили несколько других людей:

 SELECT @rownum := (IFNULL(@rownum, 0) + 1), my_awesome_table.* FROM my_awesome_table 

Вы должны быть осторожны, используя пользовательские переменные в вашем SELECT, хотя. Как отмечают документы ,

«В SELECT @a, @a: = @ a + 1, …, вы можете подумать, что MySQL сначала оценит @a, а затем выполнит второе задание. Однако изменение инструкции (например, путем добавления GROUP BY , HAVING или ORDER BY) может заставить MySQL выбрать план выполнения с другим порядком оценки ».

Различные версии MySQL могут давать разные результаты. Проверьте соответственно и рассмотрите нумерацию строк в коде, а не в запросе.

 SELECT @rownum = @rownum + 1 AS row_number, mat.* FROM my_awesome_table mat, (SELECT @rownum := 0) r 

MySQL этого не делает.

Маленький поисковик нашел эту статью:

http://explainextended.com/2009/09/14/mysql-emulating-row_number-with-multiple-order-by-conditions/