SQL столбец нумерации - MySQL - PullRequest
       6

SQL столбец нумерации - MySQL

5 голосов
/ 22 декабря 2008

Это вопрос новичка в SQL.

По сути, я хочу, чтобы дополнительный столбец возвращался с моим оператором select для нумерации строк. Я использую mysql.

Например:

select * from friends

David
Steve
Joe

Какой синтаксис получить:

1  David
2  Steve
3  Joe

Ответы [ 5 ]

7 голосов
/ 22 декабря 2008

От: http://markmal.blogspot.com/2006/04/oracle-like-rownum-in-mysql.html

SELECT @rownum:=@rownum+1 rownum, t.*FROM (SELECT @rownum:=0) r, mytable t;
1 голос
/ 22 декабря 2008

Если вы разрабатываете какое-либо приложение, лучше получить количество записей из вашего результирующего набора или набора данных или любого контейнера, который вы используете для хранения результата. Основная идея заключается в том, чтобы сделать это в вашем коде. В противном случае решение Пола сработает в вашем случае.

В MySql нет ничего похожего на ROWNUM, то, что у нас есть в Oracle, и у нас нет ни Row_Number (), ни того, что есть в MS SQL Server, ни любого другого варианта.

Edit:

Делая это в своем коде, вам не нужно менять оператор SQL, если базовая база данных изменяется, просто по этой причине.

1 голос
/ 22 декабря 2008

В SQL Server 2005 и выше вы можете использовать функцию Row_Number .

0 голосов
/ 22 декабря 2008

Как вы уже догадались по разным ответам, которые вы получили, ответ зависит от того, какую СУБД вы используете. Тем не менее, ответ обычно включает ROWNUM или вариант этого написания.

Стандартный ответ SQL, вероятно, ROW_NUMBER () - упоминается @YonahW; он работает как оконная функция и доступен не во всех СУБД.

0 голосов
/ 22 декабря 2008

Я сделаю это в хранимой процедуре

CREATE TABLE #Foo (
        [FooId] [int] IDENTITY(1,1) NOT NULL,
        [Name] varchar(255)
)

SELECT *
FROM Friends
INTO #Foo

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