MS_SQL 에서 DISTINCT 로 하면...중복데이타중 하나만 가져오는거 말구여..
전 한테이블 안에 여러개의 중복데이타가 들어가 버렸습니다.
그러니깐...같은 내용의 데이타가 거의 2줄씩 들어가 있습니다.....
제생각에는
select a.*
from table1 a, table2 b
where a.field1 = b.field1
and a.field2 = b.field2
and a.field3 = b.field3
and a.field4 = b.field4
대충 뭐 이렇게 하면 2줄 이상이 아닌것들도 나오자나여..
음...제가 말해놓고도 설명이 잘 안돼는듯..^^;;
간략히 줄이자면..
같은 테이블에 똑같은 내용의 데이타가 여러줄 들어가있습니다.
그래서 중복되는 데이타들은 단한개의 데이타만 남기고 모두 삭제하려 합니다.
도와주세요..
답변 미리 감사드리겠습니다.^^
GROUP BY 를 통한 중복값들을 하나씩만 걸러내어
새로만든 곳으로 INSERT하고
기존 테이블에 있는 데이터는 한꺼번에 날려버리고
임시테이블에 있는 값을 적용하시는게 제일 낳을거 같네요..
1) 아래의 방법은 프로시져를 만들어 하는 방법입니다.
쿼리 분석기에서 "EXEC ERASE_ROW"라고만 실행 하시면 되겠져?
CREATE PROCEDURE ERASE_ROW
AS
-- 임시 테이블을 만듭니다. #는 임시테이블이라는 명시입니다.
CREATE TABLE #TEMP
(
FIELD1 CHAR(??),
FIELD2 CHAR(??),
FIELD3 CHAR(??),
FIELD4 CHAR(??)
)
-- GROUP BY 해서 중복값들을 하나씩만 임시테이블에 집어 넣습니다.
INSERT INTO #TEMP
SELECT FIELD1, FIELD2, FIELD3, FIELD4
FROM TABLE1
GROUP BY FIELD1, FIELD2, FIELD3, FIELD4
-- 기존 테이블의 값을 삭제합니다.
DELETE TABLE1
-- 임시테이블에 있는값을 원래대로 집어 넣습니다.
INSERT INTO TABLE1
SELECT * FROM #TEMP
-- 끝
2) 다음은 쿼리분석기에서 실행방법입니다.
별반 다를게 없습니다.
CREATE라는 부분만 없습니다. ^^;
주의사항 : 단계실행중에 쿼리분석기를 종료하시면 안됩니다.
임시테이블이 사라집니다.
CREATE TABLE #TEMP
(
FIELD1 CHAR(??),
FIELD2 CHAR(??),
FIELD3 CHAR(??),
FIELD4 CHAR(??)
)
-- GROUP BY 해서 중복값들을 하나씩만 임시테이블에 집어 넣습니다.
INSERT INTO #TEMP
SELECT FIELD1, FIELD2, FIELD3, FIELD4
FROM TABLE1
GROUP BY FIELD1, FIELD2, FIELD3, FIELD4
-- 기존 테이블의 값을 삭제합니다.
DELETE TABLE1
-- 임시테이블에 있는값을 원래대로 넣습니다.
INSERT INTO TABLE1
SELECT * FROM #TEMP
-- DROP #TABLE은 안쓰셔도 상관없습니다.
-- 쿼리분석기가 종료되면 임시테이블도 자동 DROP됩니다.
DROP #TABLE
-- 끝
그럼 도움이 되셨길 간절히 바라면서.. ^___________^;;
20000....
델파이걸 wrote:
> MS_SQL 에서 DISTINCT 로 하면...중복데이타중 하나만 가져오는거 말구여..
>
> 전 한테이블 안에 여러개의 중복데이타가 들어가 버렸습니다.
>
> 그러니깐...같은 내용의 데이타가 거의 2줄씩 들어가 있습니다.....
>
> 제생각에는
>
> select a.*
> from table1 a, table2 b
> where a.field1 = b.field1
> and a.field2 = b.field2
> and a.field3 = b.field3
> and a.field4 = b.field4
>
> 대충 뭐 이렇게 하면 2줄 이상이 아닌것들도 나오자나여..
>
>
> 음...제가 말해놓고도 설명이 잘 안돼는듯..^^;;
> 간략히 줄이자면..
> 같은 테이블에 똑같은 내용의 데이타가 여러줄 들어가있습니다.
> 그래서 중복되는 데이타들은 단한개의 데이타만 남기고 모두 삭제하려 합니다.
> 도와주세요..
>
> 답변 미리 감사드리겠습니다.^^