2011-06-09 16 views
5

चलो कहते हैं कि मैं निम्नलिखित MySQL तालिका करते हैं:मैं MySQL में विभिन्न WHERE क्लॉज पर कैसे सीमित कर सकता हूं?

 
id | species 
------------ 
1 | dog 
2 | dog 
3 | dog 
4 | cat 
5 | cat 
6 | fish 
7 | fish 
8 | fish 

मैं 2 कुत्तों, 1 बिल्ली, और 1 मछली (वे क्रम में होना जरूरी नहीं है) की आईडी प्राप्त करना चाहते हैं। उदाहरण के लिए, {1, 2, 4, 6} एक मान्य आउटपुट होगा।

क्या एक एसक्यूएल क्वेरी में ऐसा करने का कोई तरीका है? जहां तक ​​मुझे पता है, LIMIT एक साधारण सरल ऑपरेटर है जो ऐसा नहीं कर सकता है। शायद जहां छेड़छाड़ की जा सकती है? या क्या एकाधिक एसक्यूएल प्रश्न यह करने का सबसे अच्छा तरीका होगा?

उत्तर

9

जहाँ तक मुझे सबसे अच्छा आप कर सकते हैं पता है, तीन SELECT रों के परिणामों गठबंधन करने के लिए UNION उपयोग करने के लिए है, उदा .:

SELECT id, species FROM animals 
    WHERE species = 'dog' 
    LIMIT 2 
UNION 
SELECT id, species FROM animals 
    WHERE species = 'cat' 
    LIMIT 1 
UNION 
SELECT id, species FROM animals 
    WHERE species = 'fish' 
    LIMIT 1; 

# Producing: 
# 
# id | species 
# ---+-------- 
# 1 | dog 
# 2 | dog 
# 4 | cat 
# 6 | fish 
+4

और बेहतर इस्तेमाल 'यूनिअन ALL'। –

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