如何在MySQL存储过程中使用IN运算符?

时间:2018-01-22 12:16:23

标签: php mysql stored-procedures

我正在尝试更新MySQL表中的多个记录,但它不能正常工作的第一个记录正在更新。我正在使用MySQL' IN'用于更新多个记录。

我的代码:

CALL  my_proc_name('','','','','','','','','','','','','','',$modifiedby,$modifiedon,'$status','$type','$ids','$start','$limit','$remarks');

我的SP是:

UPDATE my_table_name SET modifiedby=modifiedby1,modifiedon=modifiedon1,status=status1 WHERE leaveid IN (id);

参数是:

$ids = 2016,2017,2019,2020
$status = 'Approved'

我的问题是这里只有第一条记录正在更新,在这种情况下,根据我的上述参数,只更新了ID 2016。这里我的错误是什么?我的问题是,我可以直接为我的表格列提供开头('(')&结束(')')大括号' id'喜欢" IN(id)"到存储过程?

1 个答案:

答案 0 :(得分:1)

最后,我找到了解决方案。的" FIND_IN_SET"已经解决了我的问题,但我更新的行ID必须声明为" varchar"在我的存储过程(SP)中,这是我的专栏' id'应该是" varchar"在SP。

以下是我修改过的SP:

UPDATE my_table_name SET modifiedby=modifiedby1,modifiedon=modifiedon1,status=status1 WHERE  FIND_IN_SET(leaveid,id);