आपके पास गलत डेटाबेस डिज़ाइन है और आपको डेटाबेस सामान्यीकरण ( विकिपीडिया / स्टैकओवरफ़्लो ) के बारे में कुछ पढ़ने के लिए समय लेना चाहिए ।
मुझे लगता है कि आपकी तालिका कुछ इस तरह दिखती है
TABLE
================================
| group_id | user_ids | name |
| 1 | 1,4,6 | group1 |
| 2 | 4,5,1 | group2 |
इसलिए उपयोगकर्ता समूहों की आपकी तालिका में, प्रत्येक पंक्ति एक समूह का प्रतिनिधित्व करती है और user_idsस्तंभ में आपके पास उस समूह को निर्दिष्ट उपयोगकर्ता आईडी का सेट होता है।
इस तालिका का सामान्यीकृत संस्करण इस तरह दिखेगा
GROUP
=====================
| id | name |
| 1 | group1 |
| 2 | group2 |
GROUP_USER_ASSIGNMENT
======================
| group_id | user_id |
| 1 | 1 |
| 1 | 4 |
| 1 | 6 |
| 2 | 4 |
| ...
तब आप आसानी से असाइन किए गए समूह के साथ सभी उपयोगकर्ताओं, या समूह के सभी उपयोगकर्ताओं, या उपयोगकर्ता के सभी समूहों या आप जो भी सोच सकते हैं, का चयन कर सकते हैं। इसके अलावा, आपकी sql क्वेरी काम करेगी:
SELECT * FROM `group_user_assignment` WHERE user_id IN (1,2,3,4);
SELECT * FROM `group_user_assignment` t1
JOIN `group` t2 ON t2.id = t1.group_id
WHERE user_id IN (1,4);
SELECT * FROM `group_user_assignment` t1
JOIN `group` t2 ON t2.id = t1.group_id
WHERE t1.`user_id` = 1;
SELECT * FROM `group_user_assignment` t1
JOIN `group` t2 ON t2.id = t1.group_id
WHERE t1.`group_id` = 1;
SELECT COUNT(*) AS `groups_count` FROM `group_user_assignment` WHERE `user_id` = 1;
SELECT COUNT(*) AS `users_count` FROM `group_user_assignment` WHERE `group_id` = 1;
इस तरह से डेटाबेस अपडेट करना भी आसान हो जाएगा, जब आप नया असाइनमेंट जोड़ना चाहेंगे, तो आप बस नई पंक्ति डालें group_user_assignment, जब आप असाइनमेंट निकालना चाहते हैं तो आप केवल पंक्ति हटाएं group_user_assignment।
अपने डेटाबेस डिज़ाइन में, असाइनमेंट अपडेट करने के लिए, आपको अपना असाइनमेंट डेटाबेस से सेट करना होगा, इसे प्रोसेस करना होगा और अपडेट करना होगा और फिर डेटाबेस में वापस लिखना होगा।
यहाँ sqlFiddle के साथ खेलने के लिए है।
idअल्पविराम से अलग की गई सूची या कुछ और के रूप में संग्रहीत नहीं कर रहे हैं , कई पंक्तियाँ आपके प्रश्न से वापस आ जाएंगी ।