powered by simpleCommunicator - 2.0.40     © 2025 Programmizd 02
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Номерация строк
15 сообщений из 15, страница 1 из 1
Номерация строк
    #32001536
NetMinion
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Запрос:
INSERT INTO Table VALUES ((SELECT MAX ID FROM Table) + 1,'Information') или что то в это м роде...
Как заставить этот запрос работать?

ПОМОГИТЕ ПЛЗ)
...
Рейтинг: 0 / 0
Номерация строк
    #32001537
NetMinion
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Запрос:
INSERT INTO Table VALUES ((SELECT MAX ID FROM Table) + 1,'Information') или что то в это м роде...
Как заставить этот запрос работать?

ПОМОГИТЕ ПЛЗ)
...
Рейтинг: 0 / 0
Номерация строк
    #32001540
Фотография SergSuper
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну такой-то запрос работать не заставить

Надо немного попроще просто написать

create table #table(ID int, inf varchar(200))
insert #table values(0, 'empty')

INSERT INTO #table SELECT MAX(ID)+1,'Information' FROM #table

select * from #table

А я сообще обычно values не пишу. Вместо
insert #table values(0, 'empty')
можно написать
insert #table select 0, 'empty'
...
Рейтинг: 0 / 0
Номерация строк
    #32001541
Staple
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Declare @id int
Select @id = Max(Id) From T1
Insert Into T1 Values (@id,'Information')

А вообще-то не пытаешься ли ты изобрести велосипед? Мне кажется, что ты хочешь сделать то, что в SQL Server'е реализуется через Identity (посмотри Help по Create Table)
...
Рейтинг: 0 / 0
Номерация строк
    #32001543
NetMinion
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Спасибо Серж
...
Рейтинг: 0 / 0
Номерация строк
    #32001548
TolSh
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Способ нумерации строк предложенный SergSuper интересен , только вот не лишен некоторых неудобств в использовании. Скажем если в таблице полей 30 , а на данном этапе нужно заполнить только 5(все остальные заполняются default) - как тогда написать Insert ?
...
Рейтинг: 0 / 0
Номерация строк
    #32001555
Фотография SergSuper
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
"Марксизм - это не догма, а руководство к действию"
В.И.Ленин

Это я к тому: идея дадена - а вы уж как-нибудь развивайте сами.
По 5 записей так конечно не вставишь. Но...
1. А не проще ли использовать IDENTITY ?
2. Если IDENTITY действительно не подходит(допустим нужно что бы была нумерация без "дырок", а с IDENTITY они при удалении записей появяться) то наверное можно придумать обходные варианты. Например вставлять какое-нибудь предопределённое значение (например "-1" или "null"), а потом в цикле их апдейтить. Это можно делать в триггере. Тут реализация зависит уже от конкретной задачи.
3. А подумайте - может вам нумерация и вообще не нужна?

С приветом Сергей
sergsuper@mail.ru
...
Рейтинг: 0 / 0
Номерация строк
    #32001620
Фотография Garya
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Идея не моя. Получил по рассылки с сайта citycat.ru (MS SQL SERVER - дело тонкое).
declare @I int
set @I=0
update Table set ID=@I=@I+1
В BOL такого синтаксиса я не нашел. Попробовал - работает!
Нумерует записи, правда те, которые уже имеются в таблице. Успехов.
...
Рейтинг: 0 / 0
Номерация строк
    #32001623
Фотография SergSuper
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 Garya - всё-таки попробуй - не работает же

Правильно писать:
declare @I int
set @I=0
update Table set @I=ID=@I+1

Хотя я обычно писал:
declare @I int
set @I=0
update Table set ID=@I, @I=@I+1

Хотя пронумеровать записи в таблице - задача весьма тривиальная, здесь же вопрос стоял в другом: как вставлять записи так, что бы они были уже пронумерованы.
...
Рейтинг: 0 / 0
Номерация строк
    #32001638
maximF
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Проще -
INSERT INTO Table
SELECT MAX(ID)+1, 'Information'
FROM Table
...
Рейтинг: 0 / 0
Номерация строк
    #32001640
Staple
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Согласен. Просто мне моча стукнула в голову, что тов. NetMinion, возможно, захочет этот ID тут же использовать. Так бывает с бодуна. А вообще эту тему здесь уже до дыр затерли...
...
Рейтинг: 0 / 0
Номерация строк
    #32001650
NetMinion
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Спасибо всем, кто пытался ответить на этот вопрос)
на самом деле я просто слишком упростил задачу,
тем самым усложнив решение...
выход из моей ситуации таков:

SELECT IDENTITY(INT, 1, 1) as RowId, OldTable.tbl1
Into NewTable
From OldTable

правда тут возникает еще одна задача -
если tbl1 указан как IDENTITY то запрос вадаст ошибку...
(немогу вставить 2 IDENTITY) что-то вроде того...
а у меня именно такая ситуация...
...
Рейтинг: 0 / 0
Номерация строк
    #32001658
AnKa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Я вижу здесь два выхода (оба проверены - работают, самому надо было ).
1. Отбирать во временную таблицу #Tmp1 все столбцы из Tab1 кроме столбца IDENTITY.
2. Если нужен и "новый" номер строки и "старый", тогда:
SELECT IDENTITY(int, 1, 1) as NewID, OldID=CAST(t.ID as int), t.Field1, t.Field2
INTO #Tmp1
FROM Tab1 t

Желаю удачи!
...
Рейтинг: 0 / 0
Номерация строк
    #32001665
NetMinion
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
AnKa ты опять меня спосла)
я твой должник)))
спасибо..
...
Рейтинг: 0 / 0
Номерация строк
    #32001666
AnKa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
... вообще-то я мальчик. А логин просто состоит из первых двух букв имени и фамилии. Но все равно, на здоровьечко!
...
Рейтинг: 0 / 0
15 сообщений из 15, страница 1 из 1
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Номерация строк
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]