sql (49) 썸네일형 리스트형 [MSSQL] MERGE를 사용하여 데이터 입력/수정/삭제를 한 번에 처리 데이터 입력/수정/삭제를 한 번에 처리할 수 있는 MERGE에 대해 알아보자 MERGE 단일 문에서 여러 DML(INSERT, UPDATE, DELETE) 작업을 수행할 수 있다. 즉, 여러 개의 개별 DML문을 단일 문으로 대체할 수 있다. 작업이 하나의 문 내에서 수행되면서, 데이터가 처리되는 횟수가 최소화되고 쿼리 성능이 향상된다. MERGE는 다음과 같이 사용한다. MERGE 변경될테이블명 AS A USING 기준테이블명 AS B ON A.컬럼명 = B.컬럼명 WHEN MATCHED THEN 일치할때쿼리문 WHEN NOT MATCHED THEN 불일치할때쿼리문 아래와 같이 기준 테이블의 칼럼을 지정할 수 있다. 또한, MATCHED, NOT MATCHED와 함께 추가 조건 지정도 가능하다. MER.. [MSSQL] ALL, ANY, SOME (하위 쿼리에서 값을 둘 이상 반환했습니다.) ALL, ANY, SOME 하위 쿼리 (서브 쿼리)의 결괏값이 2개 이상일 경우 사용 서브 쿼리란 SELECT 안에 또 다른 SELECT가 들어간 형태를 의미한다. SELECT 컬럼명 FROM [테이블A] WHERE 컬럼명 조건연산자 (SELECT 컬럼명 FROM [테이블B] WHERE 조건) 예제 테이블 A에서 특정 값을 출력하려고 하는데, 조건은 테이블B에서 이름이 꽁쥐인 값보다 큰 값이다. A B 번호 값 이름 값 1 40 윤선생 40 2 20 꽁쥐 10 3 40 꽁쥐 30 4 60 SELECT 번호, 값 FROM A WHERE 값 >= (SELECT 값 FROM B WHERE 이름 = '꽁쥐') 위의 쿼리는 테이블B에서 꽁쥐의 데이터가 2개 존재하기 때문에 오류가 발생한다. 테이블A에서 값을 출력.. [MSSQL] SPLIT 문자열 구분자로 자르기 Split 함수 만들기 (문자열을 특정 구분자로 잘라보자) DECLARE @pString VARCHAR(8000) = '120.20.2212.142' -- 문자열 DECLARE @pDelimiter CHAR(1) = '.' -- 구분자 ;WITH E1(N) AS -- row 10 ( SELECT 1 UNION ALL SELECT 1 UNION ALL SELECT 1 UNION ALL SELECT 1 UNION ALL SELECT 1 UNION ALL SELECT 1 UNION ALL SELECT 1 UNION ALL SELECT 1 UNION ALL SELECT 1 UNION ALL SELECT 1 ), E2(N) AS (SELECT 1 FROM E1 a, E1 b), -- row 100 E4(N) AS.. [MSSQL] 테이블 '#테이블명'이(가) 없거나 권한이 없어서 삭제할 수 없습니다. 테이블 '#테이블명'이(가) 없거나 권한이 없어서 삭제할 수 없습니다. 오류 해결 1. 임시 테이블 #TEMP1을 생성하고 쿼리 실행 후 마지막에 테이블을 반납하는 프로시저 A 생성 2. 프로시저B에서 프로시저 A를 호출하는 쿼리를 작성 => 오류 발생 테이블 '#TEMP1'이(가) 없거나 권한이 없어서 삭제할 수 없습니다. 프로시저 A에서 임시 테이블 #TEMP1을 반납하는 부분에서 문제가 발생한 것으로 보인다. -> 해당 테이블이 존재하는지 체크 후 삭제하도록 하자 첫 번째 방법 IF EXISTS (SELECT * FROM tempdb..sysobjects WHERE name = '#TEMP1') BEGIN DROP TABLE #TEMP1 END 두 번째 방법 IF OBJECT_ID('tempdb.... [MSSQL] TOP with UPDATE, DELETE (N개의 행만 수정, 삭제) UPDATE TOP (n) 혹은 DELTE TOP (n) 를 이용하여 n 개의 행만 수정해보자 일반적으로 UPDATE문은 다음과 같이 사용한다. UPDATE 테이블명 SET 컬럼명 = '값' WHERE 조건 이때 WHERE 조건에 해당하는 모든 행은 SET 에서 설정한 대로 모두 변경된다. 그러나, 조건에 맞는 행 중에서 N개의 행만 UPDATE 해주고 싶을 때 UPDATE TOP (n) 테이블명 SET 컬럼명 = '값' WHERE 조건 이렇게 쿼리를 작성해주면 조건에 해당하는 모든 행 중에서 N개의 행만 UPDATE가 적용된다. 예제1) UPDATE 컬럼 수정 UPDATE TOP(2) table_ggmouse SET age = 99 예제2) DELETE 컬럼 삭제 DELETE TOP(2) table_g.. 이전 1 2 3 4 ··· 10 다음