我有一個連接多個表的查詢並返回了很多列。Oracle:檢查其他表中是否存在行
另一個表的索引列引用這些連接表之一的PK。現在我想向查詢添加另一列,指出新表中是否存在至少一行具有該ID的行。
所以,如果我有舊錶
ID
1
2
3
和新表的一個
REF_ID
1
1
1
3
那麼我想獲得
ID REF_EXISTS
1 1
2 0
3 1
我能想到的幾個如何做到這一點,但什麼是最優雅/高效的?
編輯 我測試提供器用50000個記錄舊錶的查詢性能,所有其他記錄兩行的新表匹配,所以一半的記錄有REF_EXISTS = 1。
如果有人感興趣,我會將平均結果作爲評論添加到答案中。感謝大家!
+1因爲你用這個查詢打了我7分鐘。這個很好地將ref_id的外部參數加入到old_table之前。我會使用nvl2(n.ref_id,1,0)而不是你的大小寫表達式。 – 2009-12-16 20:34:08
這是最快的查詢,平均測試時間0.06s。並且不需要GROUP BY :) – 2009-12-19 20:13:34