# MSSQL 처럼 JOIN 을 사용한 UPDATE 구문은 사용할 수 없다.
UPDATE T SET T.SuNo = S.SuNo
FROM tbSS T
INNER JOIN tmp_tbSS S
ON S.SuIdx = T.SuIdx
# SQLite에서 여러행 업데이트는 아래와 같이 할 수 있다.
-- EXPLAIN QUERY PLAN
UPDATE OR IGNORE tb_SS SET
SuNo = (SELECT SuNo FROM tmp_SS WHERE SuIdx = tb_SS.SuIdx)
WHERE EXISTS (
SELECT *
FROM tmp_SS
WHERE SuIdx = tb_SS.SuIdx
)
# 실행계획도 한번 보고~
# CORRELATED SCALAR SUBQUERY 가 보인다. 뭘까?
- 상호연관(상호관련) 서브쿼리 라고 한다.
- 메인쿼리의 값을 서브쿼리가 사용하고, 서브쿼리의 값을 받아서 메인쿼리가 계산하는 구조의 쿼리.
- 한번 스캔해서 두 군데서 쓴다는 느낌쓰~
# 서브쿼리 개념도 한번 보고~
- SELECT 문에서 쓰면, 스칼라 서브쿼리
- FROM 문에서 쓰면, 인라인 뷰
- WHERE 문에서 쓰면, 서브쿼리
# 참고 - SQLite 임시테이블 만들기
DROP TABLE IF EXISTS tmp_stuSet;
CREATE TEMPORARY TABLE tmp_stuSet (
StuSetIdx INTEGER NOT NULL
, SuhumNo TEXT
, VrNo TEXT
, PRIMARY KEY (StuSetIdx)
) WITHOUT ROWID;
INSERT INTO tmp_stuSet
SELECT *
FROM tbStuSet;
'Develop > MSSQL' 카테고리의 다른 글
Show Me The Index 😁 (0) | 2022.10.01 |
---|---|
MSSQL 통계 업데이트 & 인덱스 리빌딩 (0) | 2022.10.01 |
[sql] Stream Aggregate 언제? 왜? (실행계획, aggregate, hash match) (0) | 2021.11.16 |
[sql] 모든 제약조건 제거 모든 테이블 제거 쿼리 (0) | 2021.11.11 |
[sql] EXECUTE 후 트랜잭션 개수는 BEGIN 및 COMMIT 문 수가 일치하지 않음을 나타냅니다. 이전 개수 = 0, 현재 개수 = 1. (0) | 2021.11.08 |
댓글