MySQL Select where value = 9 'and' value =3 -
मैं इस तालिका से चयन करने का प्रयास कर रहा हूं:
group_id user_id 3 3 9 3 3 18 9 18 9 39 7 39
यूज़र_आईडी जहां इसमें 3 और 9 दोनों मान हैं:
मुझे क्या चाहिए:
Group_id user_id 3 3 9 3 3 18 9 18
मैंने जो कोशिश की:
चुनें * से prlg_pp_group_members जहां group_id IN (3 9);
मैंने पहली बार एक प्रश्न लिखा था जो 3 या 9 के समूह_आईड के साथ सभी पंक्तियों को खींच लिया और उन्हें group_id और user_id द्वारा समूहीकृत किया। यह सुनिश्चित किया गया कि कोई डुप्लिकेट पंक्तियाँ नहीं थीं (जैसे 3,3 बार दो बार प्रदर्शित हो।)
इससे हमें यह दिया गया:
SELECT * myTable WHERE group_id = 9 या group_id = समूह ग्रुप द्वारा 3 समूह, user_id;
उसके बाद, आप उस क्वेरी पर user_id द्वारा उस क्वेरी को समूहित कर सकते हैं जिसे user_id दो बार दिखाई देता है (जिसका अर्थ है कि इसमें 3 और 9 का समूह_आईड है क्योंकि हम पहले से ही उन स्थितियों पर फ़िल्टर कर चुके हैं।) इस विशिष्ट उदाहरण में, (9, 3 9) अंतिम परिणाम सेट में नहीं दिखाई देगा क्योंकि 39 दो बार नहीं होते हैं।
क्वेरी इस प्रकार दिखती है:
SELECT User_id FROM (myTable WHERE से group_id = 9 या group_id = 3 ग्रुप समूह_आईडी, user_id) से यू समूह user_id होस्टिंग COUNT (*) = 2;
अब वह जगह है जहां वरीयता में आता है: यह क्वेरी केवल user_id मान देता है यह group_id मान नहीं दिखाता है, लेकिन हम पहले से ही जानते हैं कि यह मान subquery से 3 और 9 दोनों हो सकता है। यदि आप यह मान चाहते हैं, तो आपको मूल तालिका पर वापस जाना होगा और 3 या 9 के लिए फ़िल्टर करना होगा और यह जांच लें कि user_id IN
इस subquery:
SELECT * myTable WHERE से (group_id = 9 या group_id = 3) और user_id IN (SELECT user_id FROM (myTable WHERE से group_id = 9 या group_id = 3 GROUP समूह_आईडी, user_id) टी GROUP BY user_id होस्टिंग COUNT (*) = 2);
Comments
Post a Comment