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

Откуда: Киев
Сообщений: 204
надо обновить запись в одной таблице данными из другой табилцы...
погуглил и нашёл только синтаксис с inner join, выглядит примерно так:
update t2 
set t2.p1 = t1.p1, t2.p2=t1.p2
from test2 t2 
inner join test1 t1 on t2.id = t1.id
where t1.id =4

но дело в том что у меня значения id разные в обоих таблицах. Тобишь, мне надо обновить запись t2.id=16 данными из t2.id=4

в Oracle это выглядит так:
UPDATE test2 t2 SET (p1,p2)= (SELECT p1,p2 FROM test1 t1 WHERE t1.id=4) where t2.id=16

Есть конечно вариант:
UPDATE test2 
SET 
p1 = (SELECT p1 FROM test1 t1 WHERE t1.id=4),
p2 = (SELECT p2 FROM test1 t1 WHERE t1.id=4) 
where t2.id=16
но у меня в оригинале надо обновлять 42 поля... 42 select-а дофига будет...
26 июл 11, 11:52    [11027145]     Ответить | Цитировать Сообщить модератору
 Re: update данными из другой таблицы  [new]
Гавриленко Сергей Алексеевич
Member

Откуда:
Сообщений: 37254
В хелпе есть примеры, как обновлять поля значениями из другой таблицы.
26 июл 11, 11:53    [11027154]     Ответить | Цитировать Сообщить модератору
 Re: update данными из другой таблицы  [new]
Glory
Member

Откуда:
Сообщений: 104751
Игаев
надо обновить запись в одной таблице данными из другой табилцы...
погуглил и нашёл только синтаксис с inner join, выглядит примерно так:
update t2 
set t2.p1 = t1.p1, t2.p2=t1.p2
from test2 t2 
inner join test1 t1 on t2.id = t1.id
where t1.id =4
но дело в том что у меня значения id разные в обоих таблицах. Тобишь, мне надо обновить запись t2.id=16 данными из t2.id=4

И что мешает подставить эти условия в найденный пример ?
26 июл 11, 11:55    [11027165]     Ответить | Цитировать Сообщить модератору
 Re: update данными из другой таблицы  [new]
env
Member

Откуда: Россия, Москва
Сообщений: 7498
Игаев,

Логика в соответствии t1.id и t2.id присутствует? Если нет - 42 select или один cartesian join.

inner join test1 t1 on (t1.id=4 and t2.id=16)
26 июл 11, 11:58    [11027187]     Ответить | Цитировать Сообщить модератору
 Re: update данными из другой таблицы  [new]
Игаев
Member

Откуда: Киев
Сообщений: 204
Glory
И что мешает подставить эти условия в найденный пример ?

подставлял вот так:
update t2 
set t2.p1 = t1.p1, t2.p2=t1.p2
from test2 t2 
inner join test1 t1 on (t2.id = 16 and t1.id =4)
отрабатывало и писало (обработано 1 запись), но при этом реально данные не обновлялись...
сейчас ещё раз сделал - обновляются... Толи я тупил, толи этот MS SMSE...

Вообщем, так вроде работает. Извиняюсь и тему прикрываю :)
26 июл 11, 11:58    [11027191]     Ответить | Цитировать Сообщить модератору
 Re: update данными из другой таблицы  [new]
daw
Member

Откуда: Муром -> Москва
Сообщений: 7381

> но дело в том что у меня значения id разные в обоих таблицах.
> Тобишь, мне надо обновить запись t2.id=16 данными из t2.id=4

так, в джойне любое условие можно поставить. не обязательно именно t2.id = t1.id
или вообще cross join написать, а все условия в where.

Posted via ActualForum NNTP Server 1.4

26 июл 11, 11:59    [11027196]     Ответить | Цитировать Сообщить модератору
 Re: update данными из другой таблицы  [new]
Andrey Sribnyak
Member

Откуда: Киев
Сообщений: 600
так?

declare  @test1  as table (id int, p1 int, p2 int)
declare  @test2  as table (id int, p1 int, p2 int)

insert into @test1 values (1,1,1), (2,2,2), (3,3,3), (4,4,4), (5,5,5), (6,6,6)
insert into @test2 values (1,11,11), (2,12,12), (3,13,13), (4,14,14), (5,15,15), (6,16,16)

update t1
set t1.p1=t1.p2, t1.p2=t2.p2
from
@test1 as t1 join @test2 as t2 on t1.id=t2.id



select * from @test1
26 июл 11, 12:02    [11027227]     Ответить | Цитировать Сообщить модератору
 Re: update данными из другой таблицы  [new]
Raoul
Member

Откуда:
Сообщений: 177
update test2 
set p1 = t1.p1, p2=t1.p2
from test1 as t1
where t1.id =4 and test2.id =16
26 июл 11, 12:04    [11027240]     Ответить | Цитировать Сообщить модератору
 Re: update данными из другой таблицы  [new]
Игаев
Member

Откуда: Киев
Сообщений: 204
О! Вот этот последний примерчик просто то что доктор прописал :) Спасибо большое!
26 июл 11, 12:12    [11027303]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить