वास्तव में नहीं, इसे लिखने का कोई बेहतर तरीका नहीं है (Y को दो बार देखे बिना) X को देखते हुए कि myTable.X और myTable.YY का मिलान एक ही पंक्ति से नहीं हो सकता है।
एक विकल्प के रूप में, क्वेरी का EXISTS रूप है
select *
from myTable A
where exists (select * from Y where A.X = Y.X)
and exists (select * from Y where A.XX = Y.X)
अगर Y में 1,2,3,4,5
. के X मान हैं , और x.x = 2
और x.xx = 4
, वे दोनों मौजूद हैं (Y में अलग-अलग रिकॉर्ड पर) और myTable से रिकॉर्ड आउटपुट में दिखाया जाना चाहिए।
संपादित करें:यह उत्तर पहले था कहा गया है कि You could rewrite this using _EXISTS_ clauses which will work faster than _IN_
से अधिक तेजी से काम करेगा . एएस मार्टिन ने बताया है, यह सच नहीं है (निश्चित रूप से SQL सर्वर 2005 और इसके बाद के संस्करण के लिए नहीं)। लिंक देखें
- http://explainextended.com/2009 /06/16/in-vs-join-vs-exist/
- http://sqlinthewild.co .za/index.php/2009/08/17/exists-vs-in/