Kan du ikke bare samle det sammen i stedet for at prøve at dele det op først?
UPDATE users_group
SET user_ids = CONCAT_WS(',', user_ids, '5' )
WHERE group_id =1
Men dette tyder på et dårligt normaliseret databasedesign. Generelt bør en kommasepareret liste i stedet gemmes som rækker på en anden tabel (dvs. én række pr. værdi på listen) som foreslået af Mark Baker.
EDIT - Hvis du kun vil have en enkelt kopi af et id i hvert user_ids-felt, uanset hvor mange gange du prøver at indsætte det, og du vil være i stand til at tilføje flere id'er på én gang:-
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
EDIT igen - hvis du har en tabel med brugere, der indeholder id'erne, kan du vælge id'erne fra det, hvor id'et er et af dem, du vil tilføje.
Sådan noget.
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