delete database 的問題?? |
尚未結案
|
js1981
一般會員 發表:10 回覆:17 積分:5 註冊:2004-08-04 發送簡訊給我 |
執行delete時, 這句sql 能夠執行
DELETE FROM SHIP30A WHERE MANIF_NO IN (SELECT MANIF_NO FROM SHIP30A WHERE (MANIF_DATE<=37621)); 但這一句就不能完全執行, 每次也是沒有回應
它是有DELETE 到TABLE中的資料, 但就不能完全完成整個DELETE
只DELETE 了一半便停了沒回應, 有沒有大大知道是何問題???
是不是DELETE COMMAND 不能寫得這樣複製??? DELETE FROM SHIP30B WHERE MANIF_NO IN
(SELECT B.MANIF_NO
FROM SHIP30A AS A, SHIP30B AS B
WHERE (A.MANIF_NO=B.MANIF_NO) AND (A.MANIF_DATE<=37621))
|
P.D.
版主 發表:603 回覆:4038 積分:3874 註冊:2006-10-31 發送簡訊給我 |
引言: 執行delete時, 這句sql 能夠執行 DELETE FROM SHIP30A WHERE MANIF_NO IN (SELECT MANIF_NO FROM SHIP30A WHERE (MANIF_DATE<=37621)); 但這一句就不能完全執行, 每次也是沒有回應 它是有DELETE 到TABLE中的資料, 但就不能完全完成整個DELETE 只DELETE 了一半便停了沒回應, 有沒有大大知道是何問題??? 是不是DELETE COMMAND 不能寫得這樣複製??? DELETE FROM SHIP30B WHERE MANIF_NO IN (SELECT B.MANIF_NO FROM SHIP30A AS A, SHIP30B AS B WHERE (A.MANIF_NO=B.MANIF_NO) AND (A.MANIF_DATE<=37621))語法看來似乎沒有問題, 不妨試試看 delete from 先改為 select * from , 檢查一下是否可以找出記錄來再嘗試delete 的動作 |
js1981
一般會員 發表:10 回覆:17 積分:5 註冊:2004-08-04 發送簡訊給我 |
這句可以執行
SELECT * FROM SHIP30A WHERE MANIF_NO IN (SELECT MANIF_NO FROM SHIP30A WHERE (MANIF_DATE<=37621)); 但這句就不能
SELECT * FROM SHIP30B WHERE MANIF_NO IN
(SELECT B.MANIF_NO
FROM SHIP30A AS A, SHIP30B AS B
WHERE (A.MANIF_NO=B.MANIF_NO) AND (A.MANIF_DATE<=37621))
|
timhuang
尊榮會員 發表:78 回覆:1815 積分:1608 註冊:2002-07-15 發送簡訊給我 |
|
js1981
一般會員 發表:10 回覆:17 積分:5 註冊:2004-08-04 發送簡訊給我 |
|
js1981
一般會員 發表:10 回覆:17 積分:5 註冊:2004-08-04 發送簡訊給我 |
|
timhuang
尊榮會員 發表:78 回覆:1815 積分:1608 註冊:2002-07-15 發送簡訊給我 |
|
js1981
一般會員 發表:10 回覆:17 積分:5 註冊:2004-08-04 發送簡訊給我 |
ship30a 的筆數有8447,
索引有以下這些:manif_no, manif_date, vessel, vessel str(manif_no), vessel voyage ship30b 的筆數有111898
索引有以下這些:con_id, manif_no, manif_no con_id 因為這次我要為公司做backup, 所以要把原來部份的資料減去,
所以還有很多table, 這個30b 的筆數在眾多table中已經算少了, 有些table的筆數還達30萬, 其實有沒有其他的方法去做backup, 因這次backup 的目的主要是把2002年以前的資料減去??? 請教各位大大~~~~
|
js1981
一般會員 發表:10 回覆:17 積分:5 註冊:2004-08-04 發送簡訊給我 |
|
timhuang
尊榮會員 發表:78 回覆:1815 積分:1608 註冊:2002-07-15 發送簡訊給我 |
|
js1981
一般會員 發表:10 回覆:17 積分:5 註冊:2004-08-04 發送簡訊給我 |
我嘗試個這兩句, 都能執行~~~~
DELETE FROM SHIP30B
WHERE MANIF_NO IN
(SELECT B.MANIF_NO FROM SHIP30A AS A, SHIP30B AS B
WHERE (A.MANIF_NO=B.MANIF_NO) AND (A.MANIF_DATE=36615)) DELETE FROM SHIP30B
WHERE MANIF_NO IN
(SELECT B.MANIF_NO FROM SHIP30A AS A, SHIP30B AS B
WHERE A.MANIF_NO=B.MANIF_NO AND A.MANIF_DATE IN (36556, 36585, 36616, 36646, 36677, 36707, 36738, 36769, 36799, 36830, 36860, 36891)) 是不是delete database 的時候不能用範圍來delete, 只可以用指定條件來delete??
|
timhuang
尊榮會員 發表:78 回覆:1815 積分:1608 註冊:2002-07-15 發送簡訊給我 |
|
js1981
一般會員 發表:10 回覆:17 積分:5 註冊:2004-08-04 發送簡訊給我 |
這個方法其實不是太理想, 因為我要delete 的資料有6,7萬次多
如果要指定條件, 不能用範圍,即manif_date<=36890
就會出現以下的sql, 會變成無限~~~
DELETE FROM SHIP30B
WHERE MANIF_NO IN
(SELECT B.MANIF_NO FROM SHIP30A AS A, SHIP30B AS B
WHERE A.MANIF_NO=B.MANIF_NO AND A.MANIF_DATE IN (36556, 36585, 36616, 36646, 36677, 36707, 36738, 36769, 36799, 36830, 36860, 36891, 36892, 36893, 36894,...................))
|
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |