Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Update из временной таблицы / 10 сообщений из 10, страница 1 из 1
04.12.2019, 09:53
    #39897959
Hopfen_Artur
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Update из временной таблицы
Добрый день. Подскажите как сделать update из временной таблицы, в которой может быть несколько строк.

Insert делаю так:
Код: sql
1.
2.
3.
4.
5.
INSERT INTO [table1]
([data1], [data2],  [data3], [data4])
SELECT * FROM #insert_ddl;

DROP TABLE #insert_ddl;



А вот как сделать update?
Код: sql
1.
2.
3.
4.
5.
UPDATE [table1]
SET [data3] = ?
WHERE [data1] = ?

DROP TABLE #update_ddl;
...
Рейтинг: 0 / 0
04.12.2019, 10:04
    #39897963
Guf
Guf
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Update из временной таблицы
Hopfen_Artur,

пример L
...
Рейтинг: 0 / 0
04.12.2019, 10:11
    #39897969
Hopfen_Artur
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Update из временной таблицы
Guf,

Спасибо, where теперь не очень понятна
Код: sql
1.
2.
3.
4.
5.
6.
UPDATE [table1]
SET [data3] = d.[data3]
FROM #update_ddl AS d
WHERE [data1] = ?

DROP TABLE #update_ddl;
...
Рейтинг: 0 / 0
04.12.2019, 10:13
    #39897971
Hopfen_Artur
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Update из временной таблицы
Вот так правильно будет?

Код: sql
1.
2.
3.
4.
5.
6.
UPDATE [table1]
SET [data3] = d.[data3]
FROM #update_ddl AS d
WHERE [table1].[data1] = d.[data1]

DROP TABLE #update_ddl;
...
Рейтинг: 0 / 0
04.12.2019, 10:23
    #39897975
Hopfen_Artur
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Update из временной таблицы
Я к тому что например во временной таблице #update_ddl несколько строк

#update_ddl

data1 data31 1002 2003 300
...
Рейтинг: 0 / 0
04.12.2019, 10:36
    #39897979
a_voronin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Update из временной таблицы
Hopfen_Artur
Я к тому что например во временной таблице #update_ddl несколько строк

#update_ddl

data1 data31 1002 2003 300



Напишите сначала SELECT, который джойнит целевую таблицу и таблицу источник-данных.

Потом согласно примерам, которые вам привели по ссылке выше, переделайте его в UPDATE.

Необходимо, чтобы JOIN был однозначным, то есть для каждой целевой строки было бы не более одного значения в таблице источнике.
...
Рейтинг: 0 / 0
04.12.2019, 10:59
    #39897985
Hopfen_Artur
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Update из временной таблицы
Я потестил, все хорошо. Всем спасибо.
...
Рейтинг: 0 / 0
04.12.2019, 11:02
    #39897987
court
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Update из временной таблицы
a_voronin
Необходимо, чтобы JOIN был однозначным, то есть для каждой целевой строки было бы не более одного значения в таблице источнике.

это для MERGE вроде требование ...
UPDATE по-либеральнее будет :)

другое дело, что результат будет, в принципе "случайный"
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
create table #t1 (id int, txt varchar(10) )
create table #t2 (id int, txt varchar(10) )

insert into #t1 values (1,'a'),(1,'b')
insert into #t2 values (1,'x'),(1,'y')

update t1 
set t1.txt = t2.txt
from #t1 t1 inner join #t2 t2 on t1.id = t2.id

select * from #t1

--
drop table #t1
drop table #t2


idtxt1x1x
...
Рейтинг: 0 / 0
04.12.2019, 11:22
    #39897996
a_voronin
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Update из временной таблицы
court
a_voronin
Необходимо, чтобы JOIN был однозначным, то есть для каждой целевой строки было бы не более одного значения в таблице источнике.

это для MERGE вроде требование ...
UPDATE по-либеральнее будет :)

другое дело, что результат будет, в принципе "случайный"


Даже если это прокатывает, это не есть хорошая практика. Как минимум, это плохо по производительности. Есть смысл дедублицировать входные данные по ROW_NUMBER .
...
Рейтинг: 0 / 0
04.12.2019, 11:54
    #39898016
invm
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Update из временной таблицы
a_voronin
Как минимум, это плохо по производительности. Есть смысл дедублицировать входные данные по ROW_NUMBER .
Ну да, row_number благотворно скажется на производительности...
UPDATE сам "дедублицирует", причем приделывание row_number этот механизм не отключит. В результате - двойная лишняя работа, улучшающая производительность.
...
Рейтинг: 0 / 0
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Update из временной таблицы / 10 сообщений из 10, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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