Запрос SQL, который нумерует возвращенный результат - PullRequest
1 голос
/ 04 февраля 2009

Как написать один SQL-запрос, который выбирает столбец из таблицы, но возвращает два столбца, где дополнительный содержит индекс строки (новый, начинающийся с 1 до n). Это должно быть без использования функций, которые делают это (например, row_number ()).
Есть идеи?

Редактировать: это должен быть запрос с одним выбором

Ответы [ 6 ]

4 голосов
/ 04 февраля 2009

Вы можете сделать это в любой базе данных:

SELECT  (SELECT COUNT (1) FROM field_company fc2
         WHERE fc2.field_company_id <= fc.field_company_id) AS row_num,
        fc.field_company_name
FROM    field_company fc
0 голосов
/ 07 февраля 2009

В SQL Server 2005 и более поздних версиях для этого можно использовать OVER:

ВЫБРАТЬ ранг () более (упорядочить по company_id) как rownum , название компании ОТ компании

0 голосов
/ 04 февраля 2009

Я нашел хакерский способ сделать это, за что мне немного стыдно. На Postgres 8.1:

SELECT generate_series, (SELECT имя пользователя от пользователей LIMIT 1 OFFSET generate_series) FROM generate_series (0, (SELECT count (*) - 1 от пользователей));

Я считаю, что этот метод будет работать, даже если ваша исходная таблица не имеет уникальных идентификаторов или идентификаторов.

0 голосов
/ 04 февраля 2009

В MySQL вы можете:

SELECT Row,Column1
FROM (SELECT @row := @row + 1 AS Row, Column1 FROM table1 ) 
As derived1
0 голосов
/ 04 февраля 2009

если вы используете Oracle или базу данных, которая поддерживает объекты Sequence, создайте для этой цели новый объект последовательности db. Затем создайте представление и запустите это.

вставить в представление как select column_name, sequence.next из таблицы

0 голосов
/ 04 февраля 2009
SET NOCOUNT ON

DECLARE @item_table TABLE
(
 row_num INT IDENTITY(1, 1) NOT NULL PRIMARY KEY, --THE IDENTITY STATEMENT IS IMPORTANT!
 field_company_name VARCHAR(255)
)

INSERT INTO @item_table 
    SELECT field_company_name FROM field_company

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