यदि प्राथमिक कुंजी जोड़ना कोई विकल्प नहीं है, तो एक दृष्टिकोण डुप्लिकेट को एक अस्थायी तालिका में संग्रहीत करने के लिए होगा, मौजूदा तालिका से सभी डुप्लिकेट किए गए रिकॉर्डों को हटा दें, और फिर रिकॉर्ड्स को मूल तालिका से वापस मूल तालिका में जोड़ें ।
उदाहरण के लिए (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 तालिका से डुप्लिकेट रिकॉर्ड हटाएं