2012-04-03 12 views
5

क्या कोई पंक्ति लिखने का कोई तरीका है कि पंक्तियों का एक सेट मानों के सेट से मेल खाता है या नहीं? मेरे पास मूल्यों के प्रति सेट एक पंक्ति है जिसे मुझे मिलान करने की आवश्यकता है और मैं जानना चाहता हूं कि सभी पंक्तियां मेल खाती हैं या नहीं। मैं इसे कई प्रश्नों के माध्यम से कर सकता हूं जैसे:जांचें कि एकाधिक रिकॉर्ड मानों के सेट से मेल खाते हैं

select * from tableName where (value1, value2) = ('someValue1', 'someValue2') 
select * from tableName where (value1, value2) = ('someOtherValue1', 'someOtherValue2') 

... और इसी तरह, मनमाने ढंग से प्रश्नों की संख्या तक। इस तरह की चीज को एक ही क्वेरी के रूप में फिर से लिखा जा सकता है जहां क्वेरी केवल तभी लौटाती है जब सभी मान मेल खाते हैं?

+0

हम्म, लेकिन 'value1' 'कुछ वैल्यू 1' और 'someOtherValue1' से मिलान कैसे कर सकता है? –

उत्तर

2

आप की तरह कुछ की कोशिश कर सकते:

select t.* 
from tableName t 
join (select 'someValue1' value1, 'someValue2' value2 union all 
     select 'someOtherValue1', 'someOtherValue2') v 
    on t.value1 = v.value1 and t.value2 = v.value2 
where 2= 
(select count(distinct concat(v1.value1, v1.value2)) 
from (select 'someValue1' value1, 'someValue2' value2 union all 
     select 'someOtherValue1', 'someOtherValue2') v1 
join tableName t1 
    on t1.value1 = v1.value1 and t1.value2 = v1.value2) 

आप मान युग्म है कि आप जाँच करना चाहते हैं की एक बड़ी संख्या है, तो यह उन्हें में डालने के लिए आसान हो सकता है एक अस्थायी तालिका और दो अलग हार्ड-कोडित वर्चुअल टेबल की बजाय उपरोक्त क्वेरी में अस्थायी तालिका का उपयोग करें।

+1

उत्कृष्ट सामान - बहुत सराहना की! – Josh

+0

@ मार्क बैनिस्टर, मैं संक्षिप्त उपयोग को समझ नहीं पा रहा हूं, और ऐसा लगता है कि आप कहां के बाद एक समापन कोष्ठक चूक गए। क्या आप इस उत्तर को समझा सकते हैं? – Raffaele

+0

@Raffaele: मैंने जवाब अपडेट किया है - मुझे उम्मीद है कि यह अब थोड़ा स्पष्ट है। –

2

के बारे में क्या:

SELECT * 
FROM tableName 
WHERE value1 IN ('someValue1', 'someOtherValue1') AND 
     value2 IN ('someValue2', 'someOtherValue2') 
+0

मैंने अपने प्रश्न को थोड़ा और स्पष्ट किया - उस उदाहरण में मुझे दो पंक्तियों की उम्मीद है क्योंकि मेरे पास मूल्यों के दो सेट हैं जिन्हें मुझे मिलान करने की आवश्यकता है। मेरा मानना ​​है कि आपके द्वारा सुझाई गई क्वेरी केवल एक पंक्ति से संतुष्ट होगी क्योंकि यह इन खंडों का उपयोग करती है। – Josh

+0

@ जोश मैं आपको काफी समझ नहीं पाया, क्या आप एक उदाहरण पोस्ट कर सकते हैं? –

संबंधित मुद्दे