線上訂房服務-台灣趴趴狗聯合訂房中心
發文 回覆 瀏覽次數:6130
推到 Plurk!
推到 Facebook!

SQL 語法請教(如何將關聯式資料一次刪除???)

答題得分者是:jerryhung
cherry
一般會員


發表:16
回覆:26
積分:8
註冊:2002-06-28

發送簡訊給我
#1 引用回覆 回覆 發表時間:2003-07-24 11:42:16 IP:211.23.xxx.xxx 未訂閱
各位好: 請教一個sql 語法, 一次將相關性的資料全部delete。 例如:清除 [表A] RecNo=1 和 [表B] 中MainRecNo=1 , 而且[表A]時間和序號為查詢條件。 我的資料表格式如下: ===================================== TB_A RecNo LogTime SN 1 2003-04-23 16:31:00 TXT 2 2003-04-23 19:25:40 CODE 3 2003-05-13 12:31:00 YY TB_B RecNo MainRecNo ItemID 1 1 001 2 1 002 3 2 001 4 2 002 5 2 003 ===================================== 只會查詢的語法, 但是刪除的語法我不會... 請問該怎麼下這個 query? [查詢] select a.*, b.* from TB_A a, TB_B b where (b.MainRecNo = a.RecNo) and (a.SN ='YY' And a.logtime='2003-04-23 16:31:00') [刪除](這樣子處理會有問題=> ',' 附近的語法不正確。) Delete from from TB_A a, TB_B b Where (a.SN ='YY' And a.logtime='2003-04-23 16:31:00') and (b.MainRecNo = a.RecNo) 謝謝~
jerryhung
初階會員


發表:6
回覆:46
積分:30
註冊:2002-12-11

發送簡訊給我
#2 引用回覆 回覆 發表時間:2003-07-24 11:52:04 IP:210.243.xxx.xxx 未訂閱
引言: D. 依據子查詢使用 DELETE 或使用 Transact-SQL 擴充功能 這個範例顯示了用來從依據某個聯結或相關子查詢所建立的基底資料表中刪除資料記錄的 Transact-SQL 擴充功能。第一個 DELETE 顯示了 SQL-92 相容的子查詢解決方案,第二個 DELETE 顯示了 Transact-SQL 擴充功能。這兩個查詢均可從 titles 資料表中儲存標題所建立的 titleauthors 資料表中移除資料列。 /* SQL-92-Standard subquery */ USE pubs DELETE FROM titleauthor WHERE title_id IN (SELECT title_id FROM titles WHERE title LIKE '%computers%') /* Transact-SQL extension */ USE pubs DELETE titleauthor FROM titleauthor INNER JOIN titles ON titleauthor.title_id = titles.title_id WHERE titles.title LIKE '%computers%'
所以應該小小修改一下就行了說 不過我相信這才是你卡住的重點 SQL的DELETE應該不能一次刪除多個資料表的資料,一次只能一個資料表 所以一個方法是,可把所有關聯資料Select出來到temp資料表裡面 然後再用Delete把TableA裡面有對應到temp的Key的資料都刪除 (Master) Detail子資料表也可以這樣做.... 發表人 - jerryhung 於 2003/07/24 11:54:56
cherry
一般會員


發表:16
回覆:26
積分:8
註冊:2002-06-28

發送簡訊給我
#3 引用回覆 回覆 發表時間:2003-07-24 12:46:20 IP:211.23.xxx.xxx 未訂閱
謝謝jerry的回答~~ 剛剛有查過線上說明也稍微試了一下... 還是無從得解 我想應該是像你說的... SQL的DELETE應該不能一次刪除多個資料表的資料,一次只能一個資料表 這樣一來, 如果資料筆數一多 刪除相關性的資料就得耗去很多時間了~~ 想請問大家還有其它的方法嗎? 謝謝~
ccchen
版主


發表:61
回覆:940
積分:1394
註冊:2002-04-15

發送簡訊給我
#4 引用回覆 回覆 發表時間:2003-07-25 08:04:51 IP:218.163.xxx.xxx 未訂閱
一個Sql命令無法刪除多個Table之內容 兩個方法可以考慮 1. 用TUpdateSql元件 2.在資料庫中Create Trigger
ying0515
中階會員


發表:90
回覆:168
積分:81
註冊:2003-01-04

發送簡訊給我
#5 引用回覆 回覆 發表時間:2003-07-26 12:07:45 IP:61.218.xxx.xxx 未訂閱
在資料庫建立關聯性,串聯刪除相關紀錄 Delphi Man
------
Delphi
cherry
一般會員


發表:16
回覆:26
積分:8
註冊:2002-06-28

發送簡訊給我
#6 引用回覆 回覆 發表時間:2003-07-29 17:56:37 IP:211.23.xxx.xxx 未訂閱
謝謝各位的回答~~ 看來只有自己多寫幾個procedure 來刪除資料了.. 謝謝大家提供的方法
系統時間:2024-11-26 12:36:47
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!