У вас неправильний дизайн бази даних, і вам слід витратити час, щоб прочитати щось про нормалізацію бази даних ( wikipedia / stackoverflow ).
Я припускаю, що ваш стіл виглядає приблизно так
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як список розділених комами або що - то, кілька рядків будуть повертатися з вашого запиту.