如何調出有明細沒主檔的記錄 |
答題得分者是:kadee
|
P.D.
版主 發表:603 回覆:4038 積分:3874 註冊:2006-10-31 發送簡訊給我 |
|
AndrewK
高階會員 發表:6 回覆:151 積分:161 註冊:2006-10-09 發送簡訊給我 |
|
kadee
高階會員 發表:11 回覆:141 積分:165 註冊:2002-03-20 發送簡訊給我 |
|
P.D.
版主 發表:603 回覆:4038 積分:3874 註冊:2006-10-31 發送簡訊給我 |
|
cobraliu
中階會員 發表:15 回覆:75 積分:83 註冊:2007-11-22 發送簡訊給我 |
select * from query2 where (headno,bodyno) not in (select headno,bodyno from query1)
或 select * from query2 where not exists (select headno, bodyno from query1)-->不知Firebird能不能用這個用法... ===================引 用 P.D. 文 章=================== 請問各位 如何用一段sql調出有明細沒有主檔的記錄資料來 環境:firebird 2.x XP query1 主檔:headno, bodyno query2 明細:headno, bodyno 為關聯 目前發生部份主檔記錄不見, 但明細記錄還在, 雖用手動方式查詢可以查的到, 但資料量龐大, 是否有 sql 可以查出? 謝謝!
------
初學、初學、學了很久...還是在初學階段..Orz |
kadee
高階會員 發表:11 回覆:141 積分:165 註冊:2002-03-20 發送簡訊給我 |
select * from query2 where (headno,bodyno) not in (select headno,bodyno from query1)
不建議用 not in的方式,因為firebird 看到 in 會使用table scan 而不會使用index去處理, 一旦table筆數很多的話,處理的時間會很漫長,當然筆數不多還是可以用。 但是firebirdd的正確語法應該是:(假設 headno 和 bodyno 都是 varchar) select * from query2 where query2.headno||'&'||query2.bodyno not in (select query1.headno||'&'||query1.bodyno from query1) 或 select * from query2 where not exists (select headno, bodyno from query1)-->不知Firebird能不能用這個用法... 應該不會是你要得結果,如果 query1有任何一筆 record 的話, Where後面的條件都會是 false,應該不會取回任何一筆紀錄。 反之則會取會query2的所有紀錄。
------
Kadee/BigRed Ent. www.tw165.com |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |