我有一个包含多个部分的MySql存储过程。该过程接收一个INT“ inId”和一个名为“ inIgnoreLogTypes”的VARCHAR(500)参数,该参数是一个用逗号分隔的数字列表。
SQL的第一部分如下:
DECLARE affectedNumbers text;
SELECT GROUP_CONCAT(am.Numbers) INTO affectedNumbers FROM Users am WHERE am.userID = inId;
我需要这样做,因为稍后将在整个相当大的存储过程中使用变量“ affectedNumbers”,因此出于性能考虑,我不想每次都需要执行“ IN(选择...)”操作在列表中。
我检查了一下,变量“ affectedNumbers”正确地用逗号分隔了。 下一部分是这个(发生问题的地方):
DELETE FROM UserLogs WHERE
FIND_IN_SET(User_Number, affectedNumbers) AND
NOT FIND_IN_SET(LogType, inIgnoreLogTypes);
以上语句不执行任何操作,经过数小时的搜索,“为什么”我找不到答案...也许是因为“ affcetedNumbers”是TEXT而“ User_Number”是INT?还是因为“ LogType”是INT而“ inIgnoreLogTypes”是VARCHAR?
我检查了两个集合,它们是逗号分隔的整数...
答案 0 :(得分:0)
发现了问题!我必须使用这样的东西:
myurl.com/parent -> it works
奇怪,因为没有错误。...现在可以了。