Re: [SQL ] 請教刪除重複資料(SQL Server)

看板Database作者 (潛心修行 明心見性)時間17年前 (2008/05/07 22:43), 編輯推噓1(102)
留言3則, 2人參與, 最新討論串2/5 (看更多)
: 請問各位高手目前手上我有兩個資料表 : 資料表一 資料表二 : ID ADDR ID ADDR : ----------- ----------- : AAA 123456 BBB 123456 : BBB 123456 CCC 45689 : DDD 123456 FFF 56389 : GGG 45689 HHH 8921 : CCC 123457 BBB 567 : . . . . : . . . . : . . . . : 目前我想要把資料表一的資料如果在資料表二中有出現的(ID 跟 ADDR完全一樣的) : 刪除.... : 請問要如何要下語法.... : 用select篩選出來是會了...可是要刪除語法卻遲遲想不出來實在很頭疼!! : 希望版友們能指點一下...在此先感謝各位幫忙!!! 原本我的想法,原po推文1樓的大大想法一樣  但是,想到資料表一的id、addr要在資料表二中一樣才能刪除 所以,以原po一樓的作法來看,會發生有誤 因為少一個addr的判斷  就資料表二來看,id=bbb有2個,但addr卻是不同值 意思看在資料表一,假如資料表一也有id=bbb有2個,如下 id addr ------------ BBB 123456 BBB 567567 但以原po一樓的指令來作的話,此2筆資料均會被刪除 因只判斷id=BBB就刪除,卻無判斷到addr的值 所以,小弟的方法是這樣,也請有經驗的大大看看此方法如何 這方法應該很笨 delete from 資料表一 where 資料表一.id in (select 資料表一.id from 資料表一,資料表二 where 資料表一.id=資料表二.id and 資料表一.addr=資料表二.addr) and 資料表一.addr in (select 資料表一.addr from 資料表一,資料表二 where 資料表一.id=資料表二.id and 資料表一.addr=資料表二.addr) 這樣一來,資料表一會被刪除的資料就只有id=bbb ,addr=123456此單一筆資料了 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 218.163.40.92

05/07 22:57, , 1F
像這種就用 cursor 來做,會單純很多
05/07 22:57, 1F

05/07 23:09, , 2F
cursor小弟不太會用,可否請1樓大指點呢?
05/07 23:09, 2F

05/07 23:26, , 3F
r大,您先不要跟小弟說好了.先讓我想一想怎麼用此方法.THX
05/07 23:26, 3F
文章代碼(AID): #188S05Sv (Database)
討論串 (同標題文章)
文章代碼(AID): #188S05Sv (Database)