Ne pouvez-vous pas simplement le concaténer plutôt que d'essayer de le diviser en premier ?
UPDATE users_group
SET user_ids = CONCAT_WS(',', user_ids, '5' )
WHERE group_id =1
Mais cela suggère une conception de base de données mal normalisée. Généralement, une liste séparée par des virgules doit plutôt être stockée sous forme de lignes sur une autre table (c'est-à-dire une ligne par valeur dans la liste) comme suggéré par Mark Baker.
MODIFIER - Si vous souhaitez n'avoir qu'une seule copie d'un identifiant dans chaque champ user_ids, quel que soit le nombre de tentatives d'insertion, et que vous souhaitez pouvoir ajouter plusieurs identifiants à la fois :-
UPDATE users_group a
INNER JOIN
(
SELECT 3 AS an_id
UNION
SELECT 4
) b
ON FIND_IN_SET(b.an_id, a.user_ids) = 0
SET a.user_ids = CONCAT_WS(',', a.user_ids, b.an_id )
WHERE a.group_id =1
MODIFIER à nouveau - si vous avez un tableau d'utilisateurs contenant les identifiants, vous pouvez sélectionner les identifiants à partir de celui où l'identifiant est l'un de ceux que vous souhaitez ajouter.
Quelque chose comme ça.
UPDATE users_group a
INNER JOIN
(
SELECT id
FROM users
WHERE id IN (3, 4)
) b
ON FIND_IN_SET(b.id, a.user_ids) = 0
SET a.user_ids = CONCAT_WS(',', a.user_ids, b.id )
WHERE a.group_id =1