[英]SQL server updating a table
我正在嘗試從另一個表更新表。 有200列,因此無法為所有列set tabA.colA = tabB.colA
。 還有其他解決方案嗎?
除了構建動態查詢之外,沒有其他快捷方式。
如果兩個表中的列名相同,則可以嘗試如下操作。
DECLARE @UpdateStatement VARCHAR(max)
SET @UpdateStatement = 'UPDATE Destination SET ' + CHAR(10)
SELECT @UpdateStatement = @UpdateStatement + 'Destination.' + COLUMN_NAME + ' = Source.' + COLUMN_NAME + ', ' + CHAR(10)
FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_SCHEMA = 'dbo'
AND TABLE_NAME = 'Destination'
-- append the TABLE NAME and WHERE condition to @UpdateStatement
PRINT @UpdateStatement
您可以在@UpdateStatement中添加任何要添加的條件
只需寫出UPDATE
語句並設置所有需要更改的列即可。
這是一些初期工作。
但是只要您不定期添加/刪除列,就可以重新使用SQL。
UPDATE t
SET
colA = b.colA
, colB = b.bolB
-- add more columns here
FROM tableA t
JOIN tableB t2 ON -- <<the fields that the tables can be joined on>>
示例片段:
-- using table variables for demonstration purposes
declare @tableA table (id int primary key identity(1,1), colA varchar(30), colB varchar(30), colC varchar(30));
declare @tableB table (id int primary key identity(1,1), tableAId int, colA varchar(30), colB varchar(30), colC varchar(30));
insert into @tableA (colA, colB, colC) values ('A1','A2','A3'),('A4','A5','A6');
insert into @tableB (tableAId, colA, colB, colC) values (1, 'B1','B2','B3'),(2, 'B4','B5','B6');
update t
set
colA = t2.colA,
colB = t2.colB,
colC = t2.colC
from @tableA t
join @tableB t2 on t2.tableAId = t.id;
select *
from @tableA;
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.