Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Вкинуть последовательно набор записей где ID не автоинкрементно.  [new]
palladin600
Member

Откуда: Minsk Power Station
Сообщений: 522
Добрый день!
Так получилось, что в ходе "экспериментов" удалил под сотню записей из середины таблицы.
Устал уже мудохатся вручную инсертить уже долго. Будьте любезны, подскажите как вставить кусок записей в "дырку" каким-нибудь перебором...
Есть записи:
TableOne (id, name)
1 aaa
2 bbb
3 ccc
/c 4по 78 удалены нечаянно
88 eee
89 fff


Вот как вставить записи с помощью T-SQL вроде такого цикла
for I-4 to 78
insert I, name
next

или есть другой способ?
19 окт 16, 22:22    [19802041]     Ответить | Цитировать Сообщить модератору
 Re: Вкинуть последовательно набор записей где ID не автоинкрементно.  [new]
Akina
Member

Откуда: Зеленоград, Москва, Россия
Сообщений: 21252
ну типа
insert into TableOne (id,name)
select (t1.i * 10 + t2.i), 'Name'
from (select 0 as i union select 1 union ... select 9) as t1,
     (select 0 as i union select 1 union ... select 9) as t2
where (t1.i * 10 + t2.i) not in (select id from TableOne)
синтаксис причешешь...
19 окт 16, 22:51    [19802118]     Ответить | Цитировать Сообщить модератору
 Re: Вкинуть последовательно набор записей где ID не автоинкрементно.  [new]
palladin600
Member

Откуда: Minsk Power Station
Сообщений: 522
Akina,

тысяча извинений, а
select 0 as i union select 1 union ... select 9

тут что, 8 union вставить?
и, вопрос, где указать, что надо вставлять id именно с 4 по 87?
20 окт 16, 00:03    [19802332]     Ответить | Цитировать Сообщить модератору
 Re: Вкинуть последовательно набор записей где ID не автоинкрементно.  [new]
Akina
Member

Откуда: Зеленоград, Москва, Россия
Сообщений: 21252
palladin600
тут что, 8 union вставить?
Угу... впрочем, если есть некая таблица с обширным набором неразрывных чисел (какая-нить из служебных подойдёт), можно взять и её (при большом количестве записей в ней даже одной копии будет достаточно).

palladin600
где указать, что надо вставлять id именно с 4 по 87?
А where .. not in там что, просто так? пусть само определяется, чего нехватает. В рамках диапазона, генерируемого выражением от псевдотаблиц.
20 окт 16, 00:08    [19802344]     Ответить | Цитировать Сообщить модератору
 Re: Вкинуть последовательно набор записей где ID не автоинкрементно.  [new]
iap
Member

Откуда: Москва
Сообщений: 47145
palladin600,

а зачем надо повторять удалённые id?
Какой в этом глубокий смысл?
20 окт 16, 10:24    [19803149]     Ответить | Цитировать Сообщить модератору
 Re: Вкинуть последовательно набор записей где ID не автоинкрементно.  [new]
palladin600
Member

Откуда: Minsk Power Station
Сообщений: 522
iap
palladin600,

а зачем надо повторять удалённые id?
Какой в этом глубокий смысл?


Честно говоря, сугубо эстетичный вид. Были в удалённом промежутке записи, по айди которых, можно было косвенно судить о порядке их поступления в бд. Хотел их снова туда поместисть, для нерушимости восприятия.
А сейчас некрасиво...
id, name
1
2
3
...дырка
54637
54638
, но хотелось бы именно алгоритм для вставки определяемого диапазона, а не забивания всех дырок сразу.
20 окт 16, 14:04    [19804680]     Ответить | Цитировать Сообщить модератору
 Re: Вкинуть последовательно набор записей где ID не автоинкрементно.  [new]
TaPaK
Member

Откуда: Kiev
Сообщений: 6802
palladin600
iap
palladin600,

а зачем надо повторять удалённые id?
Какой в этом глубокий смысл?


Честно говоря, сугубо эстетичный вид.

это новый виток... в sql программирование пришли дизайнеры :)
20 окт 16, 14:06    [19804688]     Ответить | Цитировать Сообщить модератору
 Re: Вкинуть последовательно набор записей где ID не автоинкрементно.  [new]
Mind
Member

Откуда: Лучший город на Земле
Сообщений: 2322
TaPaK
palladin600
пропущено...


Честно говоря, сугубо эстетичный вид.

это новый виток... в sql программирование пришли дизайнеры :)
С таким обостренным чувством прекрасного у нас вы бы вообще не смогли работать. Наверное с ума бы сошли на 3-ий день.

ID
EC94F517-998A-E611-80D6-0050568A5240
ED94F517-998A-E611-80D6-0050568A5240
EE94F517-998A-E611-80D6-0050568A5240
EF94F517-998A-E611-80D6-0050568A5240
...
20 окт 16, 22:11    [19806426]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить