要在mysql update Query中附加逗号分隔值,请不要重复

时间:2016-02-10 06:52:49

标签: php mysql

我将表格数据存储为逗号分隔值,如此

id    name       fk_id

1      abc       2,4,6
2       def      2,7,8

现在,我想在MySQL的Update Query中使用CASE WHEN或某些函数,如果没有重复值,则更新字段:

例如,fk_id的相同值则忽略其他更新,如果10为id 1然后更新,但如果7为id 2则忽略

id    name       fk_id

1      abc       2,4,6,10
2       def      2,7,8

我尝试了以下代码:

if(
            find_in_set($fk_id,fk_id),
            fk_id, 
            CONCAT_WS(',', fk_id, $fk_id)
          )

但不行。

2 个答案:

答案 0 :(得分:2)

只需更新您的代码

即可
set fk_id = if(find_in_set($fk_id,fk_id),
            fk_id, 
            CONCAT(fk_id, ',', $fk_id)
          )

答案 1 :(得分:0)

试试这个:

$sql = "
UPDATE `test` 
SET `fk_id` = CONCAT(fk_id, ',','" . $fk_id . "') 
WHERE `fk_id` REGEXP ',?(" . $fk_id . "),?'
";

注意:在速度方面,REGEXP不是最佳选择。