样本数据
当我按照以下方式设置参数时,无法正确获得结果。
查询:
SET @parmClientList ='7,11,14';
Select fkUserID from tbluserclient where MultipleClientID IN(@parmClientList);
但是当我直接声明为硬编码时,我会得到正确的结果。
查询:
select fkUserID from tbluserclient where MultipleClientID IN(7,11,14);
有人可以建议我如何将多个值传递给IN()函数参数。
最佳答案
IN()
条件中的列表必须是文字列表,它不会拆分字符串。使用FIND_IN_SET()
。
SELECT fkUserID FROM tbluserClient
WHERE FIND_IN_SET(CAST(MultipleClientID AS DECIMAL), @parmClientList);
使用
CAST(MultipleClientID AS DECIMAL)
执行该列从逗号分隔列表到使用IN(7,11,14)
测试它时得到的单个数字的相同转换。在这两种情况下,它仅检查列中的第一个数字是否在列表中。关于mysql - 具有多个参数的IN()函数,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/38454744/