기본 키를 추가하는 것이 옵션이 아닌 경우 한 가지 방법은 중복 DISTINCT를 임시 테이블에 저장하고 기존 테이블에서 모든 중복 레코드를 삭제 한 다음 임시 테이블에서 원래 테이블에 레코드를 다시 추가하는 것입니다. .
예 (SQL Server 2008 용으로 작성되었지만 기술은 모든 데이터베이스에서 동일 함) :
DECLARE @original AS TABLE([hash] varchar(20), [d] float)
INSERT INTO @original VALUES('A', 1)
INSERT INTO @original VALUES('A', 2)
INSERT INTO @original VALUES('A', 1)
INSERT INTO @original VALUES('B', 1)
INSERT INTO @original VALUES('C', 1)
INSERT INTO @original VALUES('C', 1)
DECLARE @temp AS TABLE([hash] varchar(20), [d] float)
INSERT INTO @temp
SELECT [hash], [d] FROM @original
GROUP BY [hash], [d]
HAVING COUNT(*) > 1
DELETE O
FROM @original O
JOIN @temp T ON T.[hash] = O.[hash] AND T.[d] = O.[d]
INSERT INTO @original
SELECT [hash], [d] FROM @temp
SELECT * FROM @original
sqlite에 ROW_NUMBER()
유형 함수 가 있는지 확실 하지 않지만 여기에 나열된 방법 중 일부를 시도해 볼 수도 있습니다. 기본 키없이 SQL 테이블에서 중복 레코드 삭제