Mysql 将值追加到多行的逗号分隔列
如果列为空,有没有简单的方法跳过逗号 我需要为匹配相同任务id的所有行的逗号分隔列添加值Mysql 将值追加到多行的逗号分隔列,mysql,Mysql,如果列为空,有没有简单的方法跳过逗号 我需要为匹配相同任务id的所有行的逗号分隔列添加值 ============================ id | task_id | comma_sep_col ============================ 1 | 20 |2,3 ============================ 2 | 18 | ============================ 3 | 18 |1,3 =========
============================
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 setcomma\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=''。而且效果很好。谢谢你给我指路。你能更正你的答案吗?这样我就可以接受了?