Jika menambahkan kunci utama bukan merupakan pilihan, maka salah satu pendekatannya adalah menyimpan duplikat berbeda dalam tabel temp, Hapus semua rekaman duplikat dari tabel yang sudah ada, lalu tambahkan rekaman kembali ke tabel asli dari tabel temp .
Misalnya (ditulis untuk SQL Server 2008, tetapi tekniknya sama untuk database apa pun):
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
Saya tidak yakin apakah sqlite memiliki ROW_NUMBER()fungsi tipe, tetapi jika ya, Anda juga dapat mencoba beberapa pendekatan yang tercantum di sini: Hapus catatan duplikat dari tabel SQL tanpa kunci utama