Answer the question
In order to leave comments, you need to log in
How to write a sql query to update a table with data from another table?
Hello.
There are 2 tables uzer1 Fields ( id and name1 ) and uzer2 Fields ( id and name2 ) . You need to update the name1 field of the uzer1 table with the data of the name2 field from the uzer2 table so that the table ids are id = id
How can I write this?
Answer the question
In order to leave comments, you need to log in
В таких случаях рекомендую делать так :)
Не самое кошерное решение - но зато понятно что происходит и минимум возможности для ошибки :)
--пример таблиц
CREATE TABLE uzer1 (id INT, name1 NVARCHAR(20))
CREATE TABLE uzer2 (id INT, name2 NVARCHAR(20))
-- Заполняем данными
-- Таблица [uzer1]
INSERT INTO [dbo].[uzer1]([id],[name1]) VALUES(1,'Вася')
INSERT INTO [dbo].[uzer1]([id],[name1]) VALUES(2,'Петя')
INSERT INTO [dbo].[uzer1]([id],[name1]) VALUES(3,'Гундяев')
-- Таблица [uzer2]
INSERT INTO [dbo].[uzer2]([id],[name2]) VALUES(1,'Вася')
INSERT INTO [dbo].[uzer2]([id],[name2]) VALUES(3,'Кирил')
--Шаг 1
-- Пишем CTE с джойном двух таблиц - Для проверки что именно у нас на что заменится
;WITH cte_Update
as
(SELECT t1.Name1 AS 'Вот это'
, t2.Name2 AS 'апдейтим на это'
FROM [uzer1] t1
JOIN [uzer2] t2 ON t1.id=t2.id)
--Проверяем что у нас проапдетится именно то что нам надо
SELECT * FROM cte_Update
--Шаг 2
-- пишем все тоже самое только вместо селекта Апдейт
;wITH cte_Update
as
(SELECT t1.Name1 AS 'Вот это'
, t2.Name2 AS 'апдейтим на это'
FROM [uzer1] t1
JOIN [uzer2] t2 ON t1.id=t2.id)
--Апдейтим
UPDATE cte_Update
SET [Вот это] =[апдейтим на это]
-- я использую такой способ, мне он кажется более безопасным и быстрым в написании :)
update uzer1 u1
set name1 = select name2 from uzer2 u2 where u1.id=u2.id
Didn't find what you were looking for?
Ask your questionAsk a Question
731 491 924 answers to any question