1

我需要一个简单的查询来更新mysql字段的值和一些修改,例如如果字段有值(3,4,5)我可以添加(,6),这以防万一它有值并且如果它的NULL然后更新带有“,”的字段

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

我试过这个,但这没有用

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

它没有返回任何问题,但 0 行受影响且字段未更新

4

4 回答 4

2
UPDATE GROUPS
SET SubsID = CASE WHEN SubsID IS NULL THEN '6'
                  ELSE CONCAT(SubsID, ',6')
             END
WHERE GroupID = 2
于 2012-10-15T06:26:42.960 回答
1

COALESCE在连接之前添加

UPDATE groups 
SET SubsID = CONCAT(COALESCE(SubsID,''),",5") 
WHERE GroupID = 2
于 2012-10-15T05:52:09.887 回答
0

关系数据库中的 CSV 数据是一个糟糕的主意。相反,您应该使用联结表来存储和之间的多对多关系。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);
于 2012-10-15T05:55:18.240 回答
-2

查询错误..试试下面的

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

并确保 groupid 2 存在

于 2012-10-15T05:57:05.493 回答