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

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

T-SQL:刪除所有重復(fù)的行,但保留一個(gè)

T-SQL:刪除所有重復(fù)的行,但保留一個(gè)

慕雪6442864 2019-09-18 14:47:26
我有一個(gè)行數(shù)非常多的表。不允許重復(fù),但由于行如何創(chuàng)建的問題我知道這個(gè)表中有一些重復(fù)。我需要從關(guān)鍵列的角度消除額外的行。其他一些列的數(shù)據(jù)可能略有不同,但我并不關(guān)心。我仍然需要保留其中一行。SELECT DISTINCT將無法工作,因?yàn)樗谒辛猩线\(yùn)行,我需要根據(jù)鍵列抑制重復(fù)。如何刪除額外的行但仍保持有效?
查看完整描述

3 回答

?
幕布斯6054654

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

您沒有說明您使用的是哪個(gè)版本,但在SQL 2005及更高版本中,您可以使用帶有OVER子句的公用表表達(dá)式。它有點(diǎn)像這樣:


WITH cte AS (

  SELECT[foo], [bar], 

     row_number() OVER(PARTITION BY foo, bar ORDER BY baz) AS [rn]

  FROM TABLE

)

DELETE cte WHERE [rn] > 1

玩弄它,看看你得到了什么。


(編輯:為了有所幫助,有人編輯了ORDER BYCTE中的條款。要清楚,你可以按照你想要的任何順序排序,它不一定是cte返回的列之一。事實(shí)上,一個(gè)常見的在這里使用情況是“富,酒吧”是組標(biāo)識(shí)符和“巴茲”是某種形式的時(shí)間戳。為了保持最新,你會(huì)怎么做ORDER BY baz desc)


查看完整回答
反對(duì) 回復(fù) 2019-09-18
?
Helenr

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

示例查詢:


DELETE FROM Table

WHERE ID NOT IN

(

SELECT MIN(ID)

FROM Table

GROUP BY Field1, Field2, Field3, ...

)

以下fields是您要對(duì)重復(fù)行進(jìn)行分組的列。


查看完整回答
反對(duì) 回復(fù) 2019-09-18
?
呼喚遠(yuǎn)方

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

這是我對(duì)它的一種扭曲,有一個(gè)可運(yùn)行的例子。請(qǐng)注意,這僅適用于唯一的情況Id,并且您在其他列中具有重復(fù)值。


DECLARE @SampleData AS TABLE (Id int, Duplicate varchar(20))


INSERT INTO @SampleData

SELECT 1, 'ABC' UNION ALL

SELECT 2, 'ABC' UNION ALL

SELECT 3, 'LMN' UNION ALL

SELECT 4, 'XYZ' UNION ALL

SELECT 5, 'XYZ'


DELETE FROM @SampleData WHERE Id IN (

    SELECT Id FROM (

        SELECT 

            Id

            ,ROW_NUMBER() OVER (PARTITION BY [Duplicate] ORDER BY Id) AS [ItemNumber]

            -- Change the partition columns to include the ones that make the row distinct

        FROM 

            @SampleData

    ) a WHERE ItemNumber > 1 -- Keep only the first unique item

)


SELECT * FROM @SampleData

結(jié)果如下:


Id          Duplicate

----------- ---------

1           ABC

3           LMN

4           XYZ

不知道為什么這就是我首先想到的......絕對(duì)不是最簡單的方法,但它有效。


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

添加回答

舉報(bào)

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號(hào)

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