본문 바로가기

전체 글278

중복행 지우는 쿼리 무언가 무언가의 일로 특정 컬럼이 같은 데이터를 지우고 싶을 때 (예를 들면 생성일 이라던가) 물론 그럴 일이 없게 하는 것이 가장 좋겠지만 😊 DELETE FROM 테이블명 WHERE 컬럼 IN (SELECT create_dt FROM 테이블명 // 컬럼은 중복값이 들어있는 컬럼명 GROUP BY 컬럼 HAVING COUNT(컬럼) > 1) AND PK컬럼 NOT IN (SELECT MIN(PK컬럼) FROM 테이블명 GROUP BY 컬럼 HAVING COUNT(컬럼) > 1); 2023. 1. 25.
스프레드 연산자는 .concat보다 성능이 좋다. const a = [1, 2, 3]; const b = [4, 5, 6]; const c = a.concat(b); // Bad const d = [...a, ...b]; // Good 스프레드 연산자는 concat을 쓰는 것보다 일반적으로는 더 빠르다. 왜냐하면 스프레드 연산자는 새 배열을 생성 및 조작할 필요가 없고, concat은 새 배열을 만들고 원래의 배열을 합치기 때문이다. 그럼 언제 concat이 더 빠를까? 배열 안에 하위 배열이 있고 그 수가 매우매우 많을 때 concat이 더 빠를 수 있다. 대부분의 웹개발에서는 스프레드를 쓰는게 좋다는 결론. 하지만 개인적으로는 가독성이 concat이 낫다고 생각할 때는 concat 또한 애용하는 편이다. 함수형으로 짜다 보면 중간에 스프레드를 껴넣기.. 2023. 1. 19.
unique와 nonclustered index unique를 설정하면 자동으로 nonclustered index가 걸린다. 그러나 nonclustered index를 설정한다고 unique는 아니다. // 논클러스터 인덱스가 자동으로 걸림 [COLUMN_NAME] [varchar](40) NOT NULL UNIQUE // 유니크 안걸림 (당연하겠지만) [COLUMN_NAME] [varchar](40) NOT NULL INDEX IX_XX NONCLUSTERED pk는 당연히 unique와 index 모두 걸린다 (단 pk의 index는 clustered) 2022. 12. 13.
SQL SELECT문에서 @변수에 inline으로 값 할당하기 DECLARE @variable SELECT TOP 1 @variable=[컬럼명] FROM [테이블명] WHERE [조건] ORDER BY [컬럼명] DESC 2022. 11. 11.
CASE문으로 SQL 동적으로 업데이트 하기 a, b, c, d라는 컬럼이 있고, 업데이트 시 새로운 @a, @b, @c, @d 값이 존재할 때만 각각의 컬럼들을 업데이트하고 싶을 때 간단하게 쿼리를 짤 수 있다. UPDATE [테이블명] SET a = CASE WHEN @a IS NOT NULL THEN @a ELSE a END, b = CASE WHEN @b IS NOT NULL THEN @b ELSE b END, c = CASE WHEN @c IS NOT NULL THEN @c ELSE c END, d = CASE WHEN @d IS NOT NULL THEN @d ELSE d END, 빈스트링도 허용하지 않겠다하면 UPDATE [테이블명] SET a = CASE WHEN @a IS NOT NULL OR @a = '' THEN @a ELSE a.. 2022. 11. 10.