最初に分割するのではなく、単に連結することはできませんか?
UPDATE users_group
SET user_ids = CONCAT_WS(',', user_ids, '5' )
WHERE group_id =1
しかし、これは正しく正規化されていないデータベース設計を示唆しています。通常、コンマで区切られたリストは、Mark Bakerが提案するように、代わりに別のテーブルの行として(つまり、リスト内の値ごとに1行)格納する必要があります。
編集-挿入しようとした回数に関係なく、各user_idsフィールドに任意のIDのコピーを1つだけにしたい場合、および一度に複数のIDを追加できるようにしたい場合:-
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
もう一度編集します-IDを含むユーザーのテーブルがある場合は、IDが追加するIDの1つであるIDからIDを選択できます。
このようなもの。
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