Re: [SQL ] 請教刪除重複資料(SQL Server)
: 請問各位高手目前手上我有兩個資料表
: 資料表一 資料表二
: 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
05/07 22:57, 1F
→
05/07 23:09, , 2F
05/07 23:09, 2F
→
05/07 23:26, , 3F
05/07 23:26, 3F
討論串 (同標題文章)