[비교] UPDATE

CREATE TABLE TB_1 (
  pk int PRIMARY KEY
  , col varchar(10)
);

CREATE TABLE TB_2 (
  pk int PRIMARY KEY
  , col varchar(10)
);

INSERT INTO TB_1 VALUES (1, '111');  
INSERT INTO TB_1 VALUES (2, '222');  
INSERT INTO TB_1 VALUES (3, '333');  
INSERT INTO TB_2 VALUES (1, 'aaa');  
INSERT INTO TB_2 VALUES (2, 'bbb');  

--SQL Server
UPDATE TB_1
SET col = b.col
FROM tb_1 a, tb_2 b
WHERE a.pk = b.pk;

--Oracle
UPDATE TB_1 a
SET a.col = (
	SELECT col 
	FROM TB_2 b 
	WHERE a.pk = b.pk
)
WHERE EXISTS ( --이 조건절이 없으면 3 이 null 로 갱신된다.
	SELECT 1 
	FROM TB_2 b 
	WHERE a.pk = b.pk
)

--Oracle 다른 방법
UPDATE (
  SELECT a.col a_col, b.col b_col
  FROM TB_1 a, TB_2 b
  WHERE a.pk = b.pk
)
SET a_col = b_col

- MariaDB
UPDATE CARD c INNER JOIN TMP_CARD t
ON c.card_no = t.card_no
SET c.act_no = t.act_no
WHERE c.act_no IS NULL
;