sql >> Databáze >  >> RDS >> Mysql

aktualizovat řádek bez smazání předchozích hodnot v mysql

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


  1. Získejte data z mysql pomocí php

  2. Nahrání více obrázků pomocí programu Codeigniter, který ukládá pouze jednu cestu k souboru do databáze MySQL

  3. Příklad podmínky Oracle IF

  4. Uložené procedury MySQL, Pandas a Use multi=True při provádění více příkazů