我有一个mysql存储过程,它有多个部分。过程接收一个int“inid”和一个varchar(500)参数,称为“inignorollogtypes”,它是一个用逗号分隔的数字列表。
SQL的第一部分如下:
DECLARE affectedNumbers text;
SELECT GROUP_CONCAT(am.Numbers) INTO affectedNumbers FROM Users am WHERE am.userID = inId;
我需要这样做,因为变量“affectedNumbers”稍后将在这个相当大的存储过程中使用,因此为了性能,我不希望每次需要查找列表时都“in(select…)”。
我检查了变量“affectedNumbers”get是否正确填充了逗号分隔的值。
下一部分是这个(这就是问题发生的地方):
DELETE FROM UserLogs WHERE
FIND_IN_SET(User_Number, affectedNumbers) AND
NOT FIND_IN_SET(LogType, inIgnoreLogTypes);
上面的陈述没有任何作用,经过数小时的寻找“为什么”,我找不到答案…可能是因为“affctedNumbers”是文本,“user_number”是int?或者可能是因为“logtype”是int,而“inignorollogtypes”是varchar?
我检查了两个集合,它们是逗号分隔的整数…