Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

perbarui baris tanpa menghapus nilai sebelumnya di mysql

Bisakah Anda tidak menggabungkannya saja, daripada mencoba membaginya terlebih dahulu?

UPDATE users_group 
SET user_ids = CONCAT_WS(',', user_ids, '5' ) 
WHERE group_id =1

Tapi ini menunjukkan desain database yang sangat dinormalisasi. Umumnya daftar yang dipisahkan koma seharusnya disimpan sebagai baris pada tabel lain (yaitu, satu baris per nilai dalam daftar) seperti yang disarankan oleh Mark Baker.

EDIT - Jika Anda hanya ingin memiliki satu salinan id apa pun di setiap bidang user_ids, terlepas dari berapa kali Anda mencoba memasukkannya, dan Anda ingin dapat menambahkan beberapa id sekaligus:-

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 lagi - jika Anda memiliki tabel pengguna yang berisi id maka Anda dapat memilih id dari mana id adalah salah satu yang ingin Anda tambahkan.

Sesuatu seperti ini.

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. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Pencarian Langsung JQuery KeyUp. Bagaimana caranya?

  2. Cara membuat menu level tak terbatas melalui PHP dan mysql

  3. Permintaan MySQL untuk Menghitung Domain Unik dari bidang Alamat Email

  4. mysql failover:bagaimana memilih budak sebagai master baru?

  5. Baris Pertama di Grup Oleh vs. Baris Terakhir