Как можно сделать автонумеруемое поле в SELECT. Т.е должно получится:
nomer Name
-----------
1 Alex
2 Ser
3 Andrew
И поле 'nomer' должно формироваться в запросе
Заранее благодарен?
Здравствуйте IT, вы писали:
IT>Любые, уважающие себя СУБД, должны иметь тип поля — автоикремент.
Человек наверное хочет нумеровать строки, выдаваемые селектом
у меня была похожая задача (сумма нарастающим итогом)
Выход для нумерации:
— временная таблица с доп. автоинкременным полем
— хранимая процедура с проходом по всем записям
— нумерация на клиенте
Здравствуйте Ростислав Глухов, вы писали:
РГ>Здравствуйте IT, вы писали:
IT>>Любые, уважающие себя СУБД, должны иметь тип поля — автоикремент.
РГ>Человек наверное хочет нумеровать строки, выдаваемые селектом
РГ>у меня была похожая задача (сумма нарастающим итогом) РГ>Выход для нумерации: РГ>- временная таблица с доп. автоинкременным полем РГ>- хранимая процедура с проходом по всем записям РГ>- нумерация на клиенте
РГ>мне больше нравится первое
Угу, а в MS SQL 2k есть еще предпочтительный вариант #0.
select identity(int),* from ...
L>Угу, а в MS SQL 2k есть еще предпочтительный вариант #0. L>select identity(int),* from ...
Нужно попробовать, но, мне кажется, что такое будет работать в виде:
select identity(int),* INTO #tmp from ...
Т.е. создается временная таблица.
Наверное, мне надо немного переформулировать вопрос.
Мне нужно именно нумерование строк именно в представлении. Это мне нужно для отбора записейпо страницам. Я понимаю, что подобная тема очень часто обсуждалась в конференции. Но для меня необходимо немного другой подход.
Раньше я использовал такой подход:
во временную таблицу, с полем IDENTITY запихивал записи, ограничивая их при помощи
SET ROWCOUNT n
Но при использованиии Multi-statement функции данноое ограничение накладывается и на количество заносимых записей в возвращаемую функцией таблицу. А это немного неприемлимо.
А запихивать все записи во временную таблицу немного напряженное занятие. Вот поэтому хотелось бы как-нибудь сразу ограничить это дело.
Здравствуйте Alexander Rudenko, вы писали:
AR>Здравствуйте Lexey, вы писали:
L>>Угу, а в MS SQL 2k есть еще предпочтительный вариант #0. L>>select identity(int),* from ... AR>Нужно попробовать, но, мне кажется, что такое будет работать в виде: AR>select identity(int),* INTO #tmp from ... AR>Т.е. создается временная таблица.
Нет, это будет работать в любом случае. Identity — это функция в SQL 2k.
AR>Наверное, мне надо немного переформулировать вопрос. AR>Мне нужно именно нумерование строк именно в представлении. Это мне нужно для отбора записейпо страницам. Я понимаю, что подобная тема очень часто обсуждалась в конференции. Но для меня необходимо немного другой подход.
AR>Раньше я использовал такой подход: AR>во временную таблицу, с полем IDENTITY запихивал записи, ограничивая их при помощи AR>SET ROWCOUNT n AR>Но при использованиии Multi-statement функции данноое ограничение накладывается и на количество заносимых записей в возвращаемую функцией таблицу. А это немного неприемлимо. AR>А запихивать все записи во временную таблицу немного напряженное занятие. Вот поэтому хотелось бы как-нибудь сразу ограничить это дело.
А кто мешает перед финальным селктом выполнить:
set rowcount 0?
Или почему не использовать TOP N в селекте, запихиваемом во временную таблицу?
Здравствуйте Alexander Rudenko, вы писали:
L>>Угу, а в MS SQL 2k есть еще предпочтительный вариант #0. L>>select identity(int),* from ... AR>Нужно попробовать, но, мне кажется, что такое будет работать в виде: AR>select identity(int),* INTO #tmp from ... AR>Т.е. создается временная таблица.
>Нет, это будет работать в любом случае. Identity — это функция в SQL 2k.
2 Lexey
Проверяйте работоспособность кода перед тем, как ее (работоспособность) заявлять. Это не работает в MSSQL любой версии.
Server: Msg 177, Level 15, State 1, Line 4
The IDENTITY function can only be used when the SELECT statement has an INTO clause.
Здравствуйте PeterG, вы писали:
PG>Здравствуйте Alexander Rudenko, вы писали:
L>>>Угу, а в MS SQL 2k есть еще предпочтительный вариант #0. L>>>select identity(int),* from ... AR>>Нужно попробовать, но, мне кажется, что такое будет работать в виде: AR>>select identity(int),* INTO #tmp from ... AR>>Т.е. создается временная таблица.
>>Нет, это будет работать в любом случае. Identity — это функция в SQL 2k.
PG>2 Lexey PG>Проверяйте работоспособность кода перед тем, как ее (работоспособность) заявлять. Это не работает в MSSQL любой версии. PG>Server: Msg 177, Level 15, State 1, Line 4 PG>The IDENTITY function can only be used when the SELECT statement has an INTO clause.
Вот-вот. И я о том же.
Если бы сделать такую UDF, которая бы просто нумеровала записи. Уж тогда то ее можно сравнить.
Хотя мне кажется, что это не реально.
L>>>Угу, а в MS SQL 2k есть еще предпочтительный вариант #0. L>>>select identity(int),* from ... AR>>Нужно попробовать, но, мне кажется, что такое будет работать в виде: AR>>select identity(int),* INTO #tmp from ... AR>>Т.е. создается временная таблица.
>>Нет, это будет работать в любом случае. Identity — это функция в SQL 2k.
И в MS SQL 7 identity(int) работать будет, но именно так, как сказал PeterG
PG>2 Lexey PG>Проверяйте работоспособность кода перед тем, как ее (работоспособность) заявлять. Это не работает в MSSQL любой версии. PG>Server: Msg 177, Level 15, State 1, Line 4 PG>The IDENTITY function can only be used when the SELECT statement has an INTO clause.
Здравствуйте PeterG, Вы писали:
PG>Здравствуйте Alexander Rudenko, вы писали:
L>>>Угу, а в MS SQL 2k есть еще предпочтительный вариант #0. L>>>select identity(int),* from ... AR>>Нужно попробовать, но, мне кажется, что такое будет работать в виде: AR>>select identity(int),* INTO #tmp from ... AR>>Т.е. создается временная таблица.
>>Нет, это будет работать в любом случае. Identity — это функция в SQL 2k.
PG>2 Lexey PG>Проверяйте работоспособность кода перед тем, как ее (работоспособность) заявлять. Это не работает в MSSQL любой версии. PG>Server: Msg 177, Level 15, State 1, Line 4 PG>The IDENTITY function can only be used when the SELECT statement has an INTO clause.
Мда, совсем башка плохой стал. :( Это называется почитал документацию, да невнимательно.
Re: Как можно сделать автонумеруемое поле?
От:
Аноним
Дата:
02.11.01 12:19
Оценка:
A baza-to kakaya?
V Sybase, MSSQL est' tip polya — autoincrement. A v Oracle eto delaetsya cherez Sequence.
AR>>Нужно попробовать, но, мне кажется, что такое будет работать в виде: AR>>select identity(int),* INTO #tmp from ... AR>>Т.е. создается временная таблица.
L>Нет, это будет работать в любом случае. Identity — это функция в SQL 2k.
В любом случае работать не будет, а только с INTO.
IDENTITY (Function)
Is used only in a SELECT statement with an INTO table clause to insert an identity column into a new table.
Читайте доки — они рулез (с) FIDO.
Здравствуйте Merle, Вы писали:
M>Здравствуйте Lexey, Вы писали:
AR>>>Нужно попробовать, но, мне кажется, что такое будет работать в виде: AR>>>select identity(int),* INTO #tmp from ... AR>>>Т.е. создается временная таблица.
L>>Нет, это будет работать в любом случае. Identity — это функция в SQL 2k. M>В любом случае работать не будет, а только с INTO.
M>IDENTITY (Function) M>Is used only in a SELECT statement with an INTO table clause to insert an identity column into a new table. M>Читайте доки — они рулез (с) FIDO.
Блин, ну сколько можно. Я уже давно признал свою ошибку и посыпал голову пеплом.
Здравствуйте Lexey, Вы писали:
L>Блин, ну сколько можно. Я уже давно признал свою ошибку и посыпал голову пеплом.
Извини, я просто поторопился.. Увидел пост и поспешил ответить... ;((