問delphi 的sql 問題.. |
尚未結案
|
js1981
一般會員 發表:10 回覆:17 積分:5 註冊:2004-08-04 發送簡訊給我 |
|
T.J.B
版主 發表:29 回覆:532 積分:497 註冊:2002-08-14 發送簡訊給我 |
|
seaturn99
版主 發表:69 回覆:427 積分:214 註冊:2003-08-25 發送簡訊給我 |
引言: DELETE FROM SHIP30A WHERE (SELECT * FROM SHIP30A AS A, SHIP30B AS B WHERE A.MANIF_NO=B.MANIF_NO AND A.MANIF_DATE BETWEEN "36526" AND "37621"); 以上sql 有沒有問題~如有請help me plz~~js1981 您好 : 請問是 MSSQL 嗎?? 若不是,就要確定一下是否 DB Server 有支援 Sub-Query 的語法,假設有,上述 SQL 看起來還是有問題的 .. 1. (SELECT * FROM SHIP30A AS A, SHIP30B AS B WHERE A.MANIF_NO=B.MANIF_NO AND A.MANIF_DATE BETWEEN "36526" AND "37621") 此 sub-Query 並未明確指出哪個欄位作為 WHERE 的條件判斷 2. DELETE FROM SHIP30A WHERE KeyField =(SELECT A.MyKeyField ...) ,需要指定 SHIP30A 某欄位來作為刪除的條件判斷,若 sub-Query 傳回的 Record 數不只一個,將 = 改成 IN (或利用 Exist/Not Exist 邏輯達成 IN 功能較有效率) .. PS. 若是 MSSQL 可以於 Query Analyzer 工具貼上該 SQL 做驗證 (Check syntax & Get Result) ---- 我只會兩件事,這也不會,那也不會 眼見不一定為真 ---- |
Fishman
尊榮會員 發表:120 回覆:1949 積分:2163 註冊:2006-10-28 發送簡訊給我 |
Hi js1981, 建議你說明一下你的需求,否則即使 SQL Command 可以 Work 也不一能達到你的需要 我猜測應該是這樣:
DELETE FROM SHIP30A A WHERE EXISTS
(SELECT * FROM SHIP30B AS B
WHERE A.MANIF_NO=B.MANIF_NO
AND A.MANIF_DATE BETWEEN "36526" AND "37621"); ----------------------------------
小弟才疏學淺,若有謬誤尚請不吝指教
----------------------------------
------
Fishman |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |