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

Откуда:
Сообщений: 4
Есть таблица со следующими данными:

TestTable
XId |YId
--------
2| 7
2| 8
3| 7
4| 8
4| 8

XId и YId композитный ключ
Задача в следующем
Если у XId есть YId 7 и 8, то удалить запись с YId = 8,
если же есть только YId 8, то обновить его в YId 7.

Я не прошу, готового решения (конечно это было бы здорово), подскажите в какую сторону рыть? Сам программист, но с SQL сталкиваюсь редко.
26 сен 11, 17:26    [11337330]     Ответить | Цитировать Сообщить модератору
 Re: Обновление таблицы  [new]
ё
Guest
christo,

так ?
declare @t table (XId int, YId int)

insert into @t

select 2, 7 union all
select 2, 8 union all
select 3, 7 union all
select 4, 8 union all
select 4, 8

----------------

delete t1 
from @t t1
where t1.YId = 8
  and exists (select 1 from @t t2 where t1.XId=t2.XId and t2.YId=7)

update @t
set YId=7
where YId=8

----------

select * from @t
(строк обработано: 5)

(строк обработано: 1)

(строк обработано: 2)
XId         YId
----------- -----------
2           7
3           7
4           7
4           7

(строк обработано: 4)
26 сен 11, 18:08    [11337552]     Ответить | Цитировать Сообщить модератору
 Re: Обновление таблицы  [new]
SamMan
Member

Откуда: Moscow
Сообщений: 759
christo
XId и YId композитный ключ


ключ подразумевает уникальность значений, а у вас
christo
4| 8
4| 8
26 сен 11, 18:23    [11337641]     Ответить | Цитировать Сообщить модератору
 Re: Обновление таблицы  [new]
christo
Member

Откуда:
Сообщений: 4
ё, Спасибо работает

SamMan, Это опечатка, извините
27 сен 11, 10:03    [11339462]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить