考虑以前的值的Mysql更新

考虑以前的值的Mysql更新,mysql,sql,Mysql,Sql,这是我的桌子 SNo | UserId 1 | 1,2,3, 如果我给出值1,它不应该改变值,因为它已经是1,如果我给出4它应该更新为1,2,3,4,,如果我给出值3,5它应该更新为1,2,3,5 不应删除旧值,并且新值应仅位于最后一个逗号之后 例如,如果输入值1,4 我试过这个问题 UPDATE MyTable SET UserID='1,4' WHERE SNo = '1' 但它将取代 这张桌子将是 SNo | UserId 1 | 1,4, 如果我在查询的开始处获取旧值,

这是我的桌子

SNo | UserId
1    | 1,2,3,
如果我给出值
1
,它不应该改变值,因为它已经是1,如果我给出
4
它应该更新为
1,2,3,4,
,如果我给出值
3,5
它应该更新为
1,2,3,5

不应删除旧值,并且新值应仅位于最后一个逗号之后

例如,如果输入值1,4

我试过这个问题

UPDATE MyTable SET UserID='1,4' WHERE SNo = '1'
但它将取代

这张桌子将是

SNo | UserId
1    | 1,4,
如果我在查询的开始处获取旧值,并使用输入对其进行concat,那么

然后值将是
1,2,3,1,4,

SNo | UserId
1    | 1,2,3,1,4,

我如何形成对以上所有条件的查询

使用这个

UPDATE `users` SET `namedata` = CONCAT('1,2,3,4','5') WHERE FIND_IN_SET('3',namedata)

试试这个…

<?php
$os = array("1", "2", "3", "4");
$new="6";
$testdata=explode(",",$new);
for($i=0;$i<count($testdata);$i++)
{
if(in_array($testdata[$i],$os))
{

} else {
$os[]=$testdata[$i];
}
}
$final=implode(",",$os);

UPDATE MyTable SET UserID='$final' WHERE SNo = '1';
?>


Google for“many-to-many”我读过,但不明白,你能帮我解决我的问题吗请继续阅读,这个概念很简单,为什么你要将逗号分隔的用户ID列表存储为单个值?如果您理解DB规范化,并且有充分的理由违反规则,我很想理解。但是,否则你需要改变你的设计,而不是实施这个有缺陷的设计。我不能接受旧的价值观,与新的价值观相匹配?