Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/77.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
是否使用CONCAT函数更新mysql字段?_Mysql_Sql - Fatal编程技术网

是否使用CONCAT函数更新mysql字段?

是否使用CONCAT函数更新mysql字段?,mysql,sql,Mysql,Sql,我需要一个简单的查询,用它的值更新mysql字段,并进行一些修改,例如,如果字段有值(3,4,5),我可以添加(,6),以防它有值,如果它为NULL,则用“,”更新字段 我搜索了web,找到了名为CONCAT的mysql函数,它返回连接参数后得到的字符串 我试过这个,但没用 UPDATE groups SET SubsID = CONCAT(SubsID,",5") WHERE GroupID = 2 它不返回问题,但0行受影响,字段未更新 UPDATE groups SET SubsID

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

我搜索了web,找到了名为CONCAT的mysql函数,它返回连接参数后得到的字符串

我试过这个,但没用

UPDATE groups SET SubsID = CONCAT(SubsID,",5") WHERE GroupID = 2
它不返回问题,但0行受影响,字段未更新

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

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

关系数据库中的CSV数据是一个糟糕的想法。相反,您应该使用来存储
子组
之间的多对多关系

比如说

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);

关系数据库中的CSV数据是一个糟糕的想法。相反,您应该使用来存储
子组
之间的多对多关系

比如说

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);

查询错误。请尝试下面的查询

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

并确保groupid 2存在

查询错误。请尝试下面的方法

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

确保groupid 2存在

很好,但是当该字段为空时,它仍然添加逗号。我只想在该字段不为空的情况下添加逗号。否则,我只想在没有逗号的情况下添加数字。但是当该字段为空时,它仍然添加逗号。我只想在该字段不为空的情况下添加逗号。否则,我想添加数字只有在没有逗号的情况下,你所改变的是在这种情况下没有区别的引号。你所改变的是在这种情况下没有区别的引号
UPDATE GROUPS
SET SubsID = CASE WHEN SubsID IS NULL THEN '6'
                  ELSE CONCAT(SubsID, ',6')
             END
WHERE GroupID = 2