Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/66.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
Mysql 将值追加到多行的逗号分隔列_Mysql - Fatal编程技术网

Mysql 将值追加到多行的逗号分隔列

Mysql 将值追加到多行的逗号分隔列,mysql,Mysql,如果列为空,有没有简单的方法跳过逗号 我需要为匹配相同任务id的所有行的逗号分隔列添加值 ============================ id | task_id | comma_sep_col ============================ 1 | 20 |2,3 ============================ 2 | 18 | ============================ 3 | 18 |1,3 =========

如果列为空,有没有简单的方法跳过逗号

我需要为匹配相同任务id的所有行的逗号分隔列添加值

============================
id | task_id | comma_sep_col
============================
 1 | 20      |2,3
============================
 2 | 18      |
============================
 3 | 18      |1,3
============================
 4 | 18      |2,3
============================
我正在使用以下命令:

$user_id = '1';
$comma_user_id = ','.$user_id;

$sql = "UPDATE tableName set `comma_sep_col` = CONCAT(`comma_sep_col`,'$comma_user_id') WHERE find_in_set('$user_id',`comma_sep_col`) = 0 AND `task_id` = $task_id";
结果:

============================
id | task_id | comma_sep_col
============================
 1 | 20      |2,3
============================
 2 | 18      |,1
============================
 3 | 18      |1,3
============================
 4 | 18      |2,3,1
============================   
预期结果:

============================
id | task_id | comma_sep_col
============================
 1 | 20      |2,3
============================
 2 | 18      |1
============================
 3 | 18      |1,3
============================
 4 | 18      |2,3,1
============================     
已解决:

$sql = "UPDATE tableName set `comma_sep_col` = IF(`comma_sep_col` = '','$user_id',CONCAT(`comma_sep_col`, ',', '$user_id')) WHERE find_in_set('$user_id',`comma_sep_col`) = 0 AND `task_id` = $task_id";
试试这个

$user_id = '1';
$comma_user_id = ',' . $user_id;

$sql = "UPDATE tableName
  SET `comma_sep_col` = IF(
    comma_user_id = '',
    $user_id,
    CONCAT(`comma_sep_col`, '$comma_user_id'))
  WHERE find_in_set('$user_id',`comma_sep_col`) = 0
    AND `task_id` = $task_id";
试试这个

$user_id = '1';
$comma_user_id = ',' . $user_id;

$sql = "UPDATE tableName
  SET `comma_sep_col` = IF(
    comma_user_id = '',
    $user_id,
    CONCAT(`comma_sep_col`, '$comma_user_id'))
  WHERE find_in_set('$user_id',`comma_sep_col`) = 0
    AND `task_id` = $task_id";

$comma_user_id=$user_id?','$user\u id:$user\u id使用简单的三元运算符。我不知道它在mysql语句中是如何工作的。你能进一步解释一下吗?你用的是php@michaelYes吗。我更新了$comma_user_id=','。$user_id;到$comma_user_id=$user_id?','$user\u id:$user\u id;mysql语句未被触及,因此无法工作。我假设这意味着$sql=“updatetablename set
comma\u sep\u col
=CONCAT(
comma\u sep\u col
,“$user\u id?”,“$user\u id:$user\u id”),其中find\u in\u set(“$user\u id”,“code>comma\u sep\u col)=0和
task\u id
=$task\u id”;这正是我所做的(我的mysql查询语句未被触及)$comma\u user\u id=$user\u id?','$user\u id:$user\u id使用简单的三元运算符。我不知道它在mysql语句中是如何工作的。你能进一步解释一下吗?你用的是php@michaelYes吗。我更新了$comma_user_id=','。$user_id;到$comma_user_id=$user_id?','$user\u id:$user\u id;mysql语句未被触及,因此无法工作。我假设这意味着$sql=“updatetablename set
comma\u sep\u col
=CONCAT(
comma\u sep\u col
,“$user\u id?”,“$user\u id:$user\u id”),其中find\u in\u set(“$user\u id”,“code>comma\u sep\u col)=0和
task\u id
=$task\u id”;这正是我所做的(我的mysql查询语句未被触及)不需要在mysql中进行操作最好的方法是只使用三元运算符在php中操作它检查我在问题$comma\u user\u id==''中的注释它应该是
comma\u sep\u col
=''?不管怎样,它似乎都不起作用。@MichaelEugeneYuen-yesIt应该是逗号sep\u col=''。而且效果很好。谢谢你给我指路。你能纠正你的答案吗?我可以接受吗?不需要在mysql中进行操作,最好的方法是只使用三元运算符在php中操作它。检查我在问题$comma\u user\u id==''中的评论,它应该是
comma\u sep\u col
=''?不管怎样,它似乎都不起作用。@MichaelEugeneYuen-yesIt应该是逗号sep\u col=''。而且效果很好。谢谢你给我指路。你能更正你的答案吗?这样我就可以接受了?