<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    posts - 495,  comments - 11,  trackbacks - 0

    比如現(xiàn)在有一人員表(表名:peosons) 若想將姓名、身份證號(hào)、住址這三個(gè)字段完全相同的記錄查詢出來(lái)
    select p1.* from persons p1,persons p2
    where p1.idp2.id and p1.cardid = p2.cardid and p1.pname = p2.pname and p1.address = p2.address 可以實(shí)現(xiàn)上述效果.

    幾個(gè)刪除重復(fù)記錄的SQL語(yǔ)句

    1.用rowid方法

    2.用group by方法

    3.用distinct方法

    1.用rowid方法

    據(jù)據(jù)oracle帶的rowid屬性,進(jìn)行判斷,是否存在重復(fù),語(yǔ)句如下:
    查數(shù)據(jù):
    ???? select * from table1 a where rowid !=(select?? max(rowid)
    ???? from table1 b where a.name1=b.name1 and a.name2=b.name2......)
    刪數(shù)據(jù):
    ??? delete?? from table1 a where rowid !=(select?? max(rowid)
    ???? from table1 b where a.name1=b.name1 and a.name2=b.name2......)

    2.group by方法

    查數(shù)據(jù):
      select count(num), max(name) from student --列出重復(fù)的記錄數(shù),并列出他的name屬性
      group by num
      having count(num) >1 --按num分組后找出表中num列重復(fù),即出現(xiàn)次數(shù)大于一次
    刪數(shù)據(jù):
      delete from student
      group by num
      having count(num) >1
      這樣的話就把所有重復(fù)的都刪除了。

    3.用distinct方法 -對(duì)于小的表比較有用

    create table table_new as?? select distinct *?? from table1 minux
    truncate table table1;
    insert into table1 select * from table_new;


    查詢及刪除重復(fù)記錄的方法大全

    1、查找表中多余的重復(fù)記錄,重復(fù)記錄是根據(jù)單個(gè)字段(peopleId)來(lái)判斷
    select * from people
    where peopleId in (select peopleId from people group by peopleId having count(peopleId) > 1)


    2、刪除表中多余的重復(fù)記錄,重復(fù)記錄是根據(jù)單個(gè)字段(peopleId)來(lái)判斷,只留有rowid最小的記錄
    delete from people
    where peopleId in (select peopleId from people group by peopleId?? having count(peopleId) > 1)
    and rowid not in (select min(rowid) from people group by peopleId having count(peopleId )>1)


    3、查找表中多余的重復(fù)記錄(多個(gè)字段)
    select * from vitae a
    where (a.peopleId,a.seq) in (select peopleId,seq from vitae group by peopleId,seq having count(*) > 1)


    4、刪除表中多余的重復(fù)記錄(多個(gè)字段),只留有rowid最小的記錄
    delete from vitae a
    where (a.peopleId,a.seq) in (select peopleId,seq from vitae group by peopleId,seq having count(*) > 1)
    and rowid not in (select min(rowid) from vitae group by peopleId,seq having count(*)>1)


    5、查找表中多余的重復(fù)記錄(多個(gè)字段),不包含rowid最小的記錄
    select * from vitae a
    where (a.peopleId,a.seq) in (select peopleId,seq from vitae group by peopleId,seq having count(*) > 1)
    and rowid not in (select min(rowid) from vitae group by peopleId,seq having count(*)>1)


    (二)
    比方說(shuō)
    在A表中存在一個(gè)字段“name”,
    而且不同記錄之間的“name”值有可能會(huì)相同,
    現(xiàn)在就是需要查詢出在該表中的各記錄之間,“name”值存在重復(fù)的項(xiàng);
    Select Name,Count(*) From A Group By Name Having Count(*) > 1
    如果還查性別也相同大則如下:
    Select Name,sex,Count(*) From A Group By Name,sex Having Count(*) > 1


    (三)
    方法一
    declare @max integer,@id integer
    declare cur_rows cursor local for select 主字段,count(*) from 表名 group by 主字段 having count(*) >; 1
    open cur_rows
    fetch cur_rows into @id,@max
    while @@fetch_status=0
    begin
    select @max = @max -1
    set rowcount @max
    delete from 表名 where 主字段 = @id
    fetch cur_rows into @id,@max
    end
    close cur_rows
    set rowcount 0


    方法二
    "重復(fù)記錄"有兩個(gè)意義上的重復(fù)記錄,一是完全重復(fù)的記錄,也即所有字段均重復(fù)的記錄,二是部分關(guān)鍵字段重復(fù)的記錄,比如Name字段重復(fù),而其他字段不一定

    重復(fù)或都重復(fù)可以忽略。


      1、對(duì)于第一種重復(fù),比較容易解決,使用
    select distinct * from tableName
      就可以得到無(wú)重復(fù)記錄的結(jié)果集。
      如果該表需要?jiǎng)h除重復(fù)的記錄(重復(fù)記錄保留1條),可以按以下方法刪除
    select distinct * into #Tmp from tableName
    drop table tableName
    select * into tableName from #Tmp
    drop table #Tmp
      發(fā)生這種重復(fù)的原因是表設(shè)計(jì)不周產(chǎn)生的,增加唯一索引列即可解決。


      2、這類重復(fù)問(wèn)題通常要求保留重復(fù)記錄中的第一條記錄,操作方法如下
      假設(shè)有重復(fù)的字段為Name,Address,要求得到這兩個(gè)字段唯一的結(jié)果集
    select identity(int,1,1) as autoID, * into #Tmp from tableName
    select min(autoID) as autoID into #Tmp2 from #Tmp group by Name,autoID
    select * from #Tmp where autoID in(select autoID from #tmp2)
      最后一個(gè)select即得到了Name,Address不重復(fù)的結(jié)果集(但多了一個(gè)autoID字段,實(shí)際寫時(shí)可以寫在select子句中省去此列)


    (四)
    查詢重復(fù)
    select * from tablename where id in (
    select id from tablename
    group by id
    having count(id) > 1
    )

    posted on 2009-09-03 16:50 jadmin 閱讀(159) 評(píng)論(0)  編輯  收藏

    只有注冊(cè)用戶登錄后才能發(fā)表評(píng)論。


    網(wǎng)站導(dǎo)航:
     
    主站蜘蛛池模板: 先锋影音资源片午夜在线观看视频免费播放 | 成人毛片免费观看| 久久亚洲精品成人无码网站| 香蕉视频在线免费看| 国产亚洲精品自在线观看| 深夜免费在线视频| 免费a级毛片无码a∨性按摩| 色多多A级毛片免费看| 亚洲第一黄片大全| 亚洲精品黄色视频在线观看免费资源| 亚洲国产中文v高清在线观看| 羞羞的视频在线免费观看| 亚洲精品国产精品乱码不卞| 中文字幕成人免费高清在线视频| 中文字幕亚洲专区| 久久久精品视频免费观看| 亚洲乱码无码永久不卡在线| 午夜爽爽爽男女免费观看影院| www.亚洲日本| 国产真人无遮挡作爱免费视频| 成年大片免费高清在线看黄| 亚洲国产成人一区二区三区| 91久久精品国产免费一区| 亚洲 暴爽 AV人人爽日日碰| 亚洲A丁香五香天堂网| 成人无码WWW免费视频| 亚洲丝袜中文字幕| 免费一看一级毛片全播放| kk4kk免费视频毛片| 亚洲网站在线观看| 成人网站免费观看| 亚洲精品黄色视频在线观看免费资源 | 成人午夜大片免费7777| 污污视频网站免费观看| 久久99国产亚洲高清观看首页| h视频在线免费看| 免费精品视频在线| 亚洲高清中文字幕| 四虎成人精品在永久免费| 国产精品免费大片| 亚洲精品无码av片|