Czy nie możesz po prostu połączyć tego, zamiast próbować go najpierw podzielić?
UPDATE users_group
SET user_ids = CONCAT_WS(',', user_ids, '5' )
WHERE group_id =1
Ale to sugeruje źle znormalizowany projekt bazy danych. Ogólnie rzecz biorąc, lista oddzielona przecinkami powinna być zamiast tego przechowywana jako wiersze w innej tabeli (tj. jeden wiersz na wartość na liście), zgodnie z sugestią Marka Bakera.
EDYCJA - Jeśli chcesz mieć tylko jedną kopię dowolnego identyfikatora w każdym polu user_ids, niezależnie od tego, ile razy próbujesz go wstawić, i chcesz mieć możliwość dodania wielu identyfikatorów naraz:-
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
EDYTUJ ponownie - jeśli masz tabelę użytkowników zawierającą identyfikatory, możesz wybrać identyfikatory z tego, w którym identyfikator jest jednym z tych, które chcesz dodać.
Coś takiego.
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