MSSQL 다른 테이블 값 UPDATE - MSSQL daleun teibeul gabs UPDATE

- TEST1 테이블에 TABLE2 테이블을 조인(join)을 걸어 UPDATE 

 

MSSQL 다른 테이블 값 UPDATE - MSSQL daleun teibeul gabs UPDATE
UPDATE TEST_A  
SET A.COLUMN_2 = B.COLUMN_2
FROM TEST_A A JOIN TEST_B B
	ON A.COLUMN_1 = B.COLUMN_1

TEST_A 테이블에서 TEST_B 테이블을 조인을 걸어서

TEST_A의 A.COLUMN_2 컬럼을  TEST_B B.COLUMN_2

컬럼 값으로 UPDATE 하는 구문이다.

 

 

 

reference : https://jhbench.tistory.com/236

공유하기

게시글 관리

구독하기개발천국

'SQL > MS-SQL & SQL Server Management Studio' 카테고리의 다른 글

[MS-SQL] UNION / UNION ALL 차이  (0)2019.10.01[MS SQL] SP 사용 로그 조회  (0)2019.09.25[MS SQL] INSERT,UPDATE 한번에 처리하기 (MERGE )  (0)2019.09.24[MS SQL]SQL SERVER AGENT 사용 자동 스케줄링  (0)2019.09.17[MSSQL] WHERE 절에 IF문 과 같은 효과 쿼리  (0)2019.09.04

관심있을 만한 주제

=====================================================================
1. 테이블을 생성하면서 테이블의 데이타 복사
select * into 생성될테이블명 from 원본테이블명
=====================================================================

2. 테이블 구조만 복사하겠다면
select * into 생성될테이블명 from 원본테이블명 where 1=2
=====================================================================

3. 테이블이 이미 생성되어 있는경우 데이타만 복사
insert into 카피될테이블명 select * from 원본테이블명
=====================================================================

4.특정 데이타만 복사 하겠다면
insert into 카피될테이블명 select * from 원본테이블명 where 검색조건
=====================================================================

5.다른 테이블조인해서 UPDATE 하기
UPDATE 엡데이트 테이블 명
SET 업테이트할 컬럼 = 업데이트 가져오는 컬럼
FROM 엡데이트 테이블 명 A, 다른테이블 명 B 
WHERE 조인조건
=====================================================================

6. 프로시저 검색 
SELECT * FROM INFORMATION_SCHEMA.ROUTINES

공유하기

게시글 관리

구독하기T-Tiger

저작자표시

'[개발] DataBase Tool SAP > 1. MS_SQL' 카테고리의 다른 글

MSSQL - 그룹핑 후 집계하는 방법  (0)2022.01.11SQL - 중복데이터 확인 후 삭제 방안  (0)2022.01.07[MS-SQL] 설치된 트리거 목록 확인  (0)2021.03.02[MS-SQL] SQL 에러 목록 확인  (0)2021.03.02[MS-SQL] SQL Server 현재 접속 로그인, IP 확인  (0)2021.03.02

다른 테이블에 있는 값을 기반으로 Update 실행하기 본문

defacto standard 2017. 11. 11. 01:30

MSSQL 다른 테이블 값 UPDATE - MSSQL daleun teibeul gabs UPDATE

MSSQL 다른 테이블 값 UPDATE - MSSQL daleun teibeul gabs UPDATE

TableA.a=TableB.a일 때 TableB.b의 값을 TableA.b로 업데이트한다.


UPDATE TableA
SET b = (SELECT b

   FROM TableB

   WHERE TableA.a = TableB.a)


결과

MSSQL 다른 테이블 값 UPDATE - MSSQL daleun teibeul gabs UPDATE

여기서 a=4인 값은 TableB에 없기 때문에 업데이트가 안된다.

728x90

일반적인 update 문

 

update 테이블명

set 

컬럼1 = 값

, 컬럼2 = 값

where 컬럼=조건

 

 

다른 테이블 조건에 따른 update 문

update 테이블명

set 

컬럼1 = 값

, 컬럼2 = 값

from 테이블명2 Tb2

where 테이블명.컬럼=tb2.조건

 

 

조건절에 다른테이블들과 조인이 있는 update 문

update 테이블명

set 

컬럼1 = 값

, 컬럼2 = 값

from 테이블명2 Tb2

inner join 테이블명3 tb3

on tb2.컬럼 = tb3.컬럼

where

테이블명.컬럼=tb2.컬럼

and 테이블명.컬럼=tb3.컬럼

 

728x90

공유하기

게시글 관리

구독하기개발자생각

저작자표시 비영리 변경금지

  • 카카오스토리
  • 트위터
  • 페이스북

'DB > MSSQL' 카테고리의 다른 글

mssql 에서 merge문사용(insert + update)  (2)2020.11.18MS-SQL 로그정리 및 크기 축소  (3)2020.11.04truncate table 과 delete table의 비교  (2)2020.11.03select into 와 insert into from 사용  (0)2020.11.03over 절 count 또는 row_number()문과 함께 사용  (0)2020.11.02

SQL Server에서 테이블이 데이터를 수정하기 위해서는 UPDATE 문을 사용하면 된다. SQL Server에서는 UPDATE 문에서 FROM 절을 사용할 수 있어서 다른 테이블과 조인을 하여 업데이트를 할 수 있다. 조인을 사용하지 않을 경우 서브쿼리를 사용하여 여러 개의 데이터를 업데이트하면 된다. SELECT 해서 UPDATE 하는 방법은 조인 또는 서브쿼리를 사용하면 된다.

 

MSSQL 다른 테이블 값 UPDATE - MSSQL daleun teibeul gabs UPDATE
MSSQL UPDATE문 사용법목차
  1. 기본적인 UPDATE 방법
  2. 다른 테이블과 조인하여 UPDATE 방법
  3. 서브쿼리를 사용하여 UPDATE 방법

 

기본적인 UPDATE 방법

UPDATE dbo.dept
   SET dname = 'SALES TEAM'
     , loc = 'TEXAS'
 WHERE deptno = 30

 

부서명(dname)과 지역명(loc)을 업데이트하는 예제이다.

업데이트할 칼럼이 여러 개인 경우 SET 절에서 쉼표(,)로 구분하여 칼럼과 값을 기술하면 된다.

 

다른 테이블과 조인하여 UPDATE 방법

UPDATE dbo.dept 
   SET loc = 'CALIFORNIA'
  FROM dbo.emp a
  JOIN dbo.emp b
    ON a.mgr = b.empno
 WHERE b.ename = 'SCOTT'
   AND dept.deptno = b.deptno

 

MSSQL 다른 테이블 값 UPDATE - MSSQL daleun teibeul gabs UPDATE

 

업데이트할 테이블과 다른 테이블을 조인하여 업데이트해야 할 경우 FROM 절을 사용할 수 있다. FROM 절에 조인할 테이블을 기술하고 WHERE 절에서 업데이트할 테이블과 조인하면 된다. 

 

업데이트할 테이블은 별칭을 사용할 수 없으므로 칼럼을 기술할 때 [테이블.칼럼명]으로 사용하면 된다.

 

MSSQL 다른 테이블 값 UPDATE - MSSQL daleun teibeul gabs UPDATE

 

부서(dbo.dept) 테이블의 지역명(loc)이 업데이트된 것을 확인할 수 있다.

 

UPDATE dbo.dept 
   SET loc = 'CALIFORNIA'
  FROM dbo.dept a
  JOIN dbo.emp b
    ON a.deptno = b.deptno
 WHERE b.ename = 'KING'

 

MSSQL 다른 테이블 값 UPDATE - MSSQL daleun teibeul gabs UPDATE

 

업데이트할 테이블이 FROM 절에 존재한다면 FROM 절의 테이블과 업데이트 테이블을 조인할 필요 없다.

 

조인을 해도 무방하지만 조인하지 않아도 FROM 절의 부서(dbo.dept a) 테이블과 업데이트할 부서(dbo.dept) 테이블이 동일한 데이터 범위를 가지므로 정상적으로 업데이트된다.

 

MSSQL 다른 테이블 값 UPDATE - MSSQL daleun teibeul gabs UPDATE

 

부서(dbo.dept) 테이블의 지역명(loc)이 업데이트된 것을 확인할 수 있다.

 

서브쿼리를 사용하여 UPDATE 방법

UPDATE dbo.dept
   SET loc = (SELECT a.loc FROM dbo.dept a WHERE a.deptno = 10)
 WHERE deptno IN (20, 30)

 

SET 절에서 스칼라 서브쿼리를 사용하여 값을 업데이트할 수 있다.

서브쿼리의 결과는 하나의 행, 하나의 열이 조회되어야 한다.

 

UPDATE dbo.dept
   SET loc = 'TEXAS'
 WHERE dept.deptno IN (SELECT a.deptno
                         FROM dbo.emp a
                        WHERE a.job = 'SALESMAN')

 

WHERE 절에서 서브쿼리를 사용하여 업데이트할 데이터 항목을 가져올 수 있다.

조인을 사용하지 않을 경우 WHERE 절에서 서브쿼리를 자주 사용한다.

 

UPDATE dbo.dept
   SET loc = 'TEXAS'
 WHERE EXISTS (SELECT 1
                 FROM dbo.emp a
                WHERE a.job = 'SALESMAN'
                  AND a.deptno = dept.deptno)

 

위의 IN 연산자를 사용한 쿼리를 EXISTS 연산자로 변경한 쿼리문이다. IN 연산자와 동일한 기능을 한다.

상황에 따라서 IN 연산자보다 EXISTS 연산자를 사용할 경우 성능이 좋을 때가 있으므로 사용법을 알아두면 좋다.

EMP, DEPT 테이블 생성 스크립트.txt

0.00MB

 

 

[MSSQL] MERGE 문 (UPDATE와 INSERT를 한번에)

MERGE 문을 사용하면 변경할 테이블에 데이터가 존재하는지 체크하고, UPDATE, DELETE, INSERT를 한 번에 작업이 가능하다. MERGE 문을 사용하지 않을 경우 해당 조건으로 테이블을 SELECT 한 후 IF 조건을

gent.tistory.com

 

[MSSQL] 테이블 생성 방법 2가지 (Create Table)

SQL Server에서 테이블을 생성할 때는 대부분 CREATE TABLE 문을 사용해서 테이블을 생성한다. 그러나 SQL 문이 익숙하지 않을 때는 SSMS 툴을 사용하면 조금 더 쉽게 테이블을 생성하거나 테이블 속성을