Nemůžete to jednoduše zřetězit, místo abyste se to nejprve pokusili rozdělit?
UPDATE users_group
SET user_ids = CONCAT_WS(',', user_ids, '5' )
WHERE group_id =1
To však naznačuje špatně normalizovaný návrh databáze. Obecně by měl být seznam oddělený čárkami místo toho uložen jako řádky v jiné tabulce (tj. jeden řádek na hodnotu v seznamu), jak navrhuje Mark Baker.
UPRAVIT – Pokud chcete mít pouze jednu kopii libovolného ID v každém poli user_ids, bez ohledu na to, kolikrát se jej pokusíte vložit, a chcete mít možnost přidat více ID najednou:-
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
UPRAVTE znovu – pokud máte tabulku uživatelů obsahující id, můžete vybrat id z toho, kde je id jedním z těch, které chcete přidat.
Něco takového.
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