使用CONCAT函数更新mysql字段?

时间:2012-10-15 05:50:07

标签: mysql sql

我需要一个简单的查询,用它的值更新mysql字段并进行一些修改,例如,如果字段有值(3,4,5)我可以添加(,6),这只是为了防止它有值,如果它的NULL然后使用“,”

更新字段

我搜索了网页并找到了名为CONCAT的mysql函数,它返回了连接参数产生的字符串。

我尝试了这个,但这不起作用

UPDATE groups SET SubsID = CONCAT(SubsID,",5") WHERE GroupID = 2

它返回没有问题但受影响的0行和字段未更新

4 个答案:

答案 0 :(得分:2)

UPDATE GROUPS
SET SubsID = CASE WHEN SubsID IS NULL THEN '6'
                  ELSE CONCAT(SubsID, ',6')
             END
WHERE GroupID = 2

答案 1 :(得分:1)

在连接

之前添加COALESCE
UPDATE groups 
SET SubsID = CONCAT(COALESCE(SubsID,''),",5") 
WHERE GroupID = 2

答案 2 :(得分:0)

关系数据库中的CSV数据是一个糟糕的主意。相反,您应该使用junction table来存储groupssubs之间的多对多关系。

例如

CREATE TABLE group_to_sub (
    `GroupID` INT NOT NULL REFERENCES `groups` (`GroupID`),
    `SubID` INT NOT NULL REFERENCES `subs` (`SubID`),
    PRIMARY KEY (`GroupID`, `SubID`)
) ENGINE innodb;

INSERT INTO group_to_sub (GroupID, SubID) VALUES (2, 5);

答案 3 :(得分:-2)

查询错误。请尝试以下

UPDATE groups SET SubsID = CONCAT(SubsID,',5') WHERE GroupID = 2;

确保groupid 2存在