我需要一个简单的查询来更新mysql字段的值和一些修改,例如如果字段有值(3,4,5)我可以添加(,6),这以防万一它有值并且如果它的NULL然后更新带有“,”的字段
我在网上搜索并找到名为 CONCAT 的 mysql 函数,它返回由连接参数产生的字符串。
我试过这个,但这没有用
UPDATE groups SET SubsID = CONCAT(SubsID,",5") WHERE GroupID = 2
它没有返回任何问题,但 0 行受影响且字段未更新
UPDATE GROUPS
SET SubsID = CASE WHEN SubsID IS NULL THEN '6'
ELSE CONCAT(SubsID, ',6')
END
WHERE GroupID = 2
COALESCE
在连接之前添加
UPDATE groups
SET SubsID = CONCAT(COALESCE(SubsID,''),",5")
WHERE GroupID = 2
关系数据库中的 CSV 数据是一个糟糕的主意。相反,您应该使用联结表来存储和之间的多对多关系。groups
subs
例如
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 存在