इसका कारण यह है कि जब सबक्वेरी में एक अनअलियास्ड कॉलम मौजूद नहीं होता है, लेकिन बाहरी क्वेरी में मौजूद होता है, तो Oracle मानता है कि आप बाहरी क्वेरी से कॉलम की बात कर रहे हैं।
उपनामों के साथ, जिस क्वेरी को लेकर आप भ्रमित हैं, वह इस प्रकार दिखाई देगी:
select *
from test_values tv
where tv.tst_id in (select tv.tst_id2
from test_lookup tl
where tl.tst_value = 'findMe');
उम्मीद है, इससे चीजें स्पष्ट हो जाती हैं?
आप जो समस्या देख रहे हैं, वह इस बात का एक बहुत अच्छा उदाहरण है कि आपको हमेशा अपने कॉलम को किस तालिका से लेबल करना चाहिए - इससे शुरुआत के लिए क्वेरी को बनाए रखना बहुत आसान हो जाता है!