第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問(wèn)題,去搜搜看,總會(huì)有你想問(wèn)的

從sqlite數(shù)據(jù)庫(kù)刪除重復(fù)的行

從sqlite數(shù)據(jù)庫(kù)刪除重復(fù)的行

絕地?zé)o雙 2019-11-26 11:23:36
我在SQLite3中有一個(gè)巨大的表-3600萬(wàn)行。在這個(gè)很大的表中,有兩列:hash -文字d -真實(shí)一些行是重復(fù)的。也就是說(shuō),兩者h(yuǎn)ash和d具有相同的值。如果兩個(gè)哈希值相同,則的值也相同d。但是,兩個(gè)相同的d'并不意味著兩個(gè)相同hash'。我想刪除重復(fù)的行。我沒(méi)有主鍵列。最快的方法是什么?
查看完整描述

3 回答

?
www說(shuō)

TA貢獻(xiàn)1775條經(jīng)驗(yàn) 獲得超8個(gè)贊

您需要一種區(qū)分行的方法。根據(jù)您的評(píng)論,您可以為此使用特殊的rowid列。


要通過(guò)保持最低的刪除重復(fù)rowid每(hash,d):


delete   from YourTable

where    rowid not in

         (

         select  min(rowid)

         from    YourTable

         group by

                 hash

         ,       d

         )


查看完整回答
反對(duì) 回復(fù) 2019-11-26
?
狐的傳說(shuō)

TA貢獻(xiàn)1804條經(jīng)驗(yàn) 獲得超3個(gè)贊

如果添加主鍵不是一種選擇,則一種方法是將重復(fù)的DISTINCT存儲(chǔ)在臨時(shí)表中,從現(xiàn)有表中刪除所有重復(fù)的記錄,然后將記錄從臨時(shí)表中添加回原始表中。


例如(為SQL Server 2008編寫的,但是該技術(shù)對(duì)于任何數(shù)據(jù)庫(kù)都是相同的):


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()類型函數(shù),但是如果這樣做,您還可以嘗試此處列出的一些方法:從沒(méi)有主鍵的SQL表中刪除重復(fù)的記錄


查看完整回答
反對(duì) 回復(fù) 2019-11-26
  • 3 回答
  • 0 關(guān)注
  • 1104 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)