IDENTITY в SELECT

AnKa
Дата: 18.01.2001 12:13:06
MS SQL 7.0
Можно ли в SELECT ввести столбец - уникальный номер строки? Знаю, как через временную таблицу. А "на прямую" мона?

Заранее спа.
SergSuper
Дата: 18.01.2001 12:23:50
По-моему если только так:

select newid(), name from sysobjects
Александр Гладченко
Дата: 18.01.2001 13:58:15
Пример из рассылки http://mssqlhelp.com.ru/ :

declare @intCounter int
set @intCounter = 0
update Yaks
SET @intCounter = YakSequenceNumber = @intCounter + 1

Синтаксис привязки счётчика к порядковому номеру строки следующий:

SET @variable = column = expression
Mark
Дата: 18.01.2001 22:20:28
Try this :

Select a1.au_fname , 'id'=count(a2.au_fname)
From authors a1 inner join authors a2
on a1.au_fname>=a2.au_fname
Group by a1.au_fname
AnKa
Дата: 19.01.2001 13:08:27
Всем спасибо!
Oleg F
Дата: 19.01.2001 14:11:15
Меня тоже эта проблема интересовала. Суммирую мои знания и ответы, которые я прочитал в этой конференции, я для себя сделал вывод, что в SELECT-е вывести номер строки невозможно.
Действительно, фунцию IDENTITY() можно использовать только при INSERT во временную (или иную) таблицу.
Вариант с UPDATE-том, приведённы из рассылки, предлагает нумеровать строки физически в уже
существующей таблице.
А вариант с COUNT() и GROUP BY в запросе бесспорно красивый. Но... Я попробовал потестировать его и к сожалению на реальных таблицах и больших объёмах данных он работает отвратительно медленно (раз в 20 медленнее чем обычный SELECT). Конечно, на таблице из мальнькой учебной базы pubs он идёт нормально, но в реальных условиях не годится.
Будем надеяться, что в следующих версиях SQL Server фирма Microsoft всё-таки позволит использовать функцию IDENTITY() в обычном SQL-запросе, без всякого insert.
Staple
Дата: 19.01.2001 14:28:28
Ну, IDENTITY() еще можно использовать в SELECT .. INTO. Но это, к сожалению, опять-таки подразумевает создание временной (или не очень, в любом случае - физической) таблицы...