2011-07-20 19 views
7

मेरे पास एक टेबल Studies है जिसे मैं एक चयन करता हूं।एसक्यूएल एकाधिक पंक्ति सबक्वायरी

मुझे फिर रिकॉर्ड किए गए रिकॉर्डसेट पर एक और चयन करने की आवश्यकता है। मैं इस (स्पष्टता के लिए सरलीकृत) की कोशिश की है:

SELECT * FROM Studies 
WHERE Id = '2' OR Id = '3' OR Id = '7'; 

SELECT * FROM Studies 
WHERE (Name = 'Test') 
    AND Id IN (SELECT * FROM Studies WHERE Id = '2' OR Id = '3' OR Id = '7'); 

लेकिन मैं निम्नलिखित एसक्यूएल त्रुटि प्राप्त हो रही:

Only a single result allowed for a SELECT that is part of an expression


मैं गलत कहाँ जा रहा हूँ? यदि यह मेरे कोड से स्पष्ट नहीं है - मैं डेटाबेस प्रोग्रामिंग के लिए अपेक्षाकृत नया हूं।

धन्यवाद

उत्तर

13

आप एक IN (...) सबक्वेरी में एक से अधिक स्तंभ नहीं लौट सकते। आपको * (सभी कॉलम लौटाएं) ID में बदलना होगा। लेकिन आपकी क्वेरी को सबक्वायरी की आवश्यकता नहीं है, आप केवल आईडी को पहली क्वेरी में जोड़ सकते हैं। आप आम तौर पर प्रदर्शन कारणों से जहां आप कर सकते हैं subqueries से बचना चाहते हैं।

SELECT * 
FROM Studies 
WHERE Name = 'Test' 
AND ID IN ('2', '3','7') 

या फिर आप अपने संरचना रखना चाहते हैं:

SELECT * 
FROM Studies 
WHERE (Name = 'Test') 
AND ID IN (SELECT ID FROM Studies WHERE ID = '2' OR ID = '3' OR ID = '7'); 
+0

'तुम एक में (...) subquery' में एक से अधिक स्तंभ नहीं लौट सकते। धन्यवाद। –

1
SELECT * FROM Studies WHERE (Name = 'Test') AND ID IN (SELECT ID FROM Studies WHERE ID = '2' OR ID = '3' OR ID = '7'); 
संबंधित मुद्दे