看板 Database 關於我們 聯絡資訊
: 請問各位高手目前手上我有兩個資料表 : 資料表一 資料表二 : 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
regionbbs:像這種就用 cursor 來做,會單純很多 05/07 22:57
tbstien:cursor小弟不太會用,可否請1樓大指點呢? 05/07 23:09
tbstien:r大,您先不要跟小弟說好了.先讓我想一想怎麼用此方法.THX 05/07 23:26