我有两张桌子.
表A和表B.列是相同的.
create table TableA (
id int
, name varchar
, last datetime
)
create table TableB (
id int
, name varchar
, last datetime
)
Run Code Online (Sandbox Code Playgroud)
我用大量数据填充表A. 我想将表A中的数据插入或更新到表B中.
我想从表A中获取数据,如果id和name doenst匹配则插入到表B中,如果id和name匹配则更新.
我尝试了一些ETL工具,但结果非常慢.我有id和name的索引,我想用SQL尝试这个.
我有以下但不正确的工作:
SELECT @id = ID,
@name = name,
@LSDATE = LastSeen_DateTime
FROM DBO.A
IF EXISTS (SELECT ID, name FROM DBO.A
WHERE @ID = ID AND @name = Name)
Run Code Online (Sandbox Code Playgroud)
begin - update end else begin --insert end
我想我需要把它放在一个循环中并且不太确定如何使这个运行.
谢谢.
declare c int
set c = 1
while c<700 do
update users set profile_display_name = concat(substring(first_name,1,1), last_name)
where profile_display_name is null and id between ((c-1)*10000+1) and (c*10000);
SET c = c+1;
End while ;
Run Code Online (Sandbox Code Playgroud)
我收到错误。接近声明和结束 while 语句。我哪里出错了??