成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

SQL刪除表中重復(fù)數(shù)據(jù)的兩種方法

數(shù)據(jù)庫 SQL Server
SQL有自增的ID列,表中有一些記錄內(nèi)容重復(fù),如何刪除這些重復(fù)的數(shù)據(jù)呢?下面將為您介紹兩種刪除的方法,供您參考。

SQL表中如果出現(xiàn)重復(fù)的記錄,就需要進(jìn)行刪除,下面將為您介紹其中的兩個(gè)版本方法,供您參考,希望對(duì)您有所幫助。

版本一:由于記錄有自增列,所以自增列可以做為記錄的唯一標(biāo)識(shí),由此可見,重復(fù)的記錄的自增ID是一個(gè)遞增關(guān)系,這里我們可以只保留ID最小的那條記錄,其它的全部刪除。利用一個(gè)嵌套語句就非常容易寫出下面的SQL。其中的sname,saddress是記錄除了ID外的所有列。

DELETE  FROM a
WHERE   id NOT IN ( SELECT  MIN(id)
                    FROM    a
                    GROUP BY sname,
                            saddress )

 版本二:充分利用SQL05的幾個(gè)比較實(shí)用的特性。這里先簡(jiǎn)單說說要用到的幾個(gè)特性。詳細(xì)用法可到網(wǎng)上搜索下。

 1:ROW_NUMBER,它的作用就是用來生成行號(hào),默認(rèn)是從1開始。

2:公用表表達(dá)式(CTE),我這里并不會(huì)利用它的遞歸,而是用它來簡(jiǎn)化嵌套查詢及對(duì)表自身引用功能。CTE的語法如下:

[ WITH [ ,n ] ]
::=
        expression_name [ ( column_name [ ,n ] ) ]
    AS
        ( CTE_query_definition )

說明:1>CTE在某種程序上相當(dāng)表變量或者臨時(shí)表的功能。但比起表變量來說它***的優(yōu)勢(shì)是對(duì)自身的引用,CTE語句后面緊跟的select ,update,delete等,操作的結(jié)果都會(huì)直接反應(yīng)的實(shí)際物理表中。相比臨時(shí)表,***優(yōu)勢(shì)無非是性能,臨時(shí)表實(shí)際是一張物理存在的表,在對(duì)它進(jìn)行操作時(shí),會(huì)產(chǎn)生額外的IO開銷以及管理上的開銷。

2>CTE語法后面需要直接跟上使用CTE的相關(guān)語句select ,update,delete等,否則CTE會(huì)失效,下面的語句是錯(cuò)誤的:

WITH   b AS ( SELECT   ROW_NUMBER() OVER ( PARTITION BY sname, saddress ORDER BY sname, saddress ) AS rn,
                        *
               FROM     a
             )
    DELETE  FROM b
    WHERE   rn > 1
 SELECT * from a
 SELECT * FROM b WHERE rn>1
3:PARTITION BY,分區(qū)函數(shù)。和聚合函數(shù)不同的地方在于它能返回一個(gè)分組中的多條記錄,聚合函數(shù)一般只有一條反映統(tǒng)計(jì)值的記錄,partition  by用于給結(jié)果集分組,如果沒有指定那么它把整個(gè)結(jié)果集作為一個(gè)分組 。

經(jīng)過上面的三個(gè)關(guān)鍵字的介紹后,下面給出三者相結(jié)合后的結(jié)果。

WITH   b AS ( SELECT   ROW_NUMBER() OVER ( PARTITION BY sname, saddress ORDER BY sname, saddress ) AS rn,
                        *
               FROM     a
             )
    DELETE  FROM b
    WHERE   rn > 1
版本一和版本二比較:

1:版本二更加容易閱讀。

2:版本二性能較版本一強(qiáng)。我們可以通過以以信息來看??梢钥吹桨姹疽粫?huì)發(fā)生兩次表掃描。

Table 'a'. Scan count 2, logical reads 4, physical reads 0, read-ahead reads 0, lob logical reads 0, lob physical reads 0, lob read-ahead reads 0.
Table 'Worktable'. Scan count 1, logical reads 0, physical reads 0, read-ahead reads 0, lob logical reads 0, lob physical reads 0, lob read-ahead reads 0.

(0 row(s) affected)
Table 'a'. Scan count 1, logical reads 2, physical reads 0, read-ahead reads 0, lob logical reads 0, lob physical reads 0, lob read-ahead reads 0.

(0 row(s) affected)



 

責(zé)任編輯:段燃 來源: 互聯(lián)網(wǎng)
相關(guān)推薦

2010-07-01 12:29:27

SQL Server重

2010-11-12 11:44:37

SQL Server刪

2021-11-30 10:00:01

SQL數(shù)據(jù)重復(fù)

2024-10-16 18:09:54

2010-11-24 14:36:25

修復(fù)mysql表

2010-09-01 16:47:18

SQL刪除

2024-06-17 07:41:43

2011-05-24 10:54:15

數(shù)據(jù)庫重復(fù)數(shù)據(jù)刪除

2010-09-13 13:05:03

sql server分

2010-11-10 13:22:41

SQL Server備

2010-11-09 13:09:58

SQL Server分

2009-08-17 08:29:00

c#刪除指定文件

2011-03-14 15:47:33

Oracle數(shù)據(jù)庫

2010-09-28 15:46:22

SQL刪除重復(fù)記錄

2010-07-07 16:53:54

SQL Server重

2010-11-16 16:36:40

Oracle刪除用戶

2010-08-04 17:41:52

掛載NFS

2010-07-26 09:55:55

SQL Server重

2010-07-08 13:06:05

SQL Server刪

2010-07-21 11:38:59

SQL Server重
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)

主站蜘蛛池模板: 午夜视频在线观看视频 | 欧美视频在线看 | 精品久久久久久久久久 | 精品国产一区二区三区久久久蜜月 | 国产成人jvid在线播放 | 日韩视频一区二区 | 男人天堂久久久 | 成人午夜免费在线视频 | 九热在线 | 国产欧美综合在线 | 国产黄色av网站 | 欧美一级淫片免费视频黄 | 精品久久久久久久久亚洲 | 欧美一区二区三区四区五区无卡码 | 在线午夜 | 亚洲国产精品一区二区久久 | 国产精品欧美一区喷水 | a免费视频 | 国产精品久久久久久福利一牛影视 | 久久99精品久久久久久国产越南 | www一级片 | 在线欧美日韩 | 亚洲日本免费 | 自拍偷拍精品 | 男人天堂免费在线 | 涩涩视频网站在线观看 | 成人精品免费视频 | 日韩欧美在线不卡 | 久久一二 | 国产精品久久久久一区二区 | 国产一二三视频在线观看 | 在线免费看黄 | 日本久久一区二区三区 | 成人免费在线 | 亚洲欧美国产精品久久 | 亚洲国产成人精品女人久久久 | 成人在线精品视频 | 国产黄色网 | 久久一 | 中文字幕精品一区 | 伊人网综合|