我有一个名为 user 的表,其中一个类型为SET的字段名为 privs 。 此字段的允许值为:'ADD','EDIT',DELETE','ALL'。
我应该执行什么SQL查询来添加让我们说值'EDIT'到给定行的字段privs?但只有在没有这样的价值时才会这样。
修改
我试过了: 更新用户集 PRIVS = CONCAT(PRIVS, '编辑')
但是我收到了一个错误: 第1行/
列的'privs'列数据被截断之后并非所有行都在其privs字段中具有EDIT值。
答案 0 :(得分:4)
看起来MySQL可以添加第二个EDIT
。但是,它确实要求列表以逗号分隔:
update user
set privs = concat(privs, if(length(privs)>0,',',''), 'EDIT')
where id = 42
答案 1 :(得分:0)
您必须将旧值与新值连接起来,然后修剪逗号以管理旧空值的情况。
UPDATE user
SET privs = TRIM(BOTH ',' WITH CONCAT(privs, ',', 'EDIT'))
WHERE id = 123