기존에는 어떤 설정 값을 임시로 담아야하거나 할 때 임시테이블을 사용하거나 임시테이블변수를 사용하거나 서브쿼리로 SELECT ~ UNION ALL 이렇게 많이 사용했는데,
FROM 절에도 VALUES 문법을 사용할 수 있다는 것을 알게되었다.
여러가지 구문에서 활용가능하며, 사용 방법에 따라 WORKTABLE을 생성하지 않으니 데이터양이 많지 않고 중간 값 저장이 필요없고 정렬이 필요없는 케이스라면 해당 문법을 사용하는 것도 좋아보인다.
-- SELECT ~ UNION ALL
SELECT *
FROM ( SELECT N'rpc' AS [NAME], 1 AS [NUMBER]
UNION ALL
SELECT N'pub', 2
UNION ALL
SELECT N'sub', 4
UNION ALL
SELECT N'dist', 8
UNION ALL
SELECT N'published' , 1
)AS A
-- 단일 사용
SELECT *
FROM ( VALUES (N'rpc' , 1)
, (N'pub' , 2)
, (N'sub' , 4)
, (N'dist' , 8)
, (N'published' , 1)
) AS MID_TABLE([NAME], [NUMBER]) -- 테이블명(컬럼명)
WHERE [NUMBER] = 1
-- JOIN에 사용
SELECT *
FROM DBO.spt_values AS A
JOIN ( VALUES (N'rpc' , 1)
, (N'pub' , 2)
, (N'sub' , 4)
, (N'dist' , 8)
, (N'published' , 1)
) AS MID_TABLE([NAME], [NUMBER]) -- 테이블명(컬럼명)
ON A.[NAME] = MID_TABLE.[NAME]
AND A.[NUMBER] = MID_TABLE.[NUMBER]
'MSSQL' 카테고리의 다른 글
[MSSQL] SSMS 20버전 이상 인증서 오류 (1) | 2024.12.12 |
---|---|
[MSSQL] ERROR CODE 666. UNIQUIFIER 고유 식별자 최대값 초과 (0) | 2024.08.22 |
[MSSQL] SET TRUSTWORTHY ON 옵션 DB 복원 시 주의점 (0) | 2024.08.21 |
[MSSQL] 스냅샷DB가 있는 경우 데이터베이스 백업 오류 현상 (0) | 2024.08.07 |
[MSSQL] 데이터베이스 offline 처리 후 drop하면 mdf, ldf 파일은 지워질까 안지워질까? (0) | 2024.07.31 |