Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/61.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
MySql删除在\u集中查找\u不起作用的位置_Mysql_Stored Procedures - Fatal编程技术网

MySql删除在\u集中查找\u不起作用的位置

MySql删除在\u集中查找\u不起作用的位置,mysql,stored-procedures,Mysql,Stored Procedures,我有一个MySql存储过程,它有多个部分。过程接收一个INT“inId”和一个名为“inIgnoreLogTypes”的VARCHAR(500)参数,该参数是一个逗号分隔的数字列表 SQL的第一部分如下所示: DECLARE affectedNumbers text; SELECT GROUP_CONCAT(am.Numbers) INTO affectedNumbers FROM Users am WHERE am.userID = inId; DELETE FROM UserLogs W

我有一个MySql存储过程,它有多个部分。过程接收一个INT“inId”和一个名为“inIgnoreLogTypes”的VARCHAR(500)参数,该参数是一个逗号分隔的数字列表

SQL的第一部分如下所示:

DECLARE affectedNumbers text;

SELECT GROUP_CONCAT(am.Numbers) INTO affectedNumbers FROM Users am WHERE am.userID = inId;
DELETE FROM UserLogs WHERE
FIND_IN_SET(UserLogs.User_Number, affectedNumbers) AND
NOT FIND_IN_SET(UserLogs.LogType, inIgnoreLogTypes);
我需要这样做,因为变量“affectedNumbers”稍后将在这个相当大的存储过程中使用,所以为了性能起见,我不想每次需要查找列表时都“IN(Select…)”

我检查了,变量“affectedNumbers”get用逗号分隔的值正确填充。 下一部分是(问题就发生在这里):

上面的陈述毫无作用,经过几个小时的“为什么”搜索,我找不到答案。。。也许是因为“affecedNumbers”是文本,“User\u Number”是INT?或者可能是因为“LogType”是INT,“inIgnoreLogTypes”是VARCHAR


我检查了两个集合,它们都是逗号分隔的整数…

发现了问题!我必须用这样的东西:

DECLARE affectedNumbers text;

SELECT GROUP_CONCAT(am.Numbers) INTO affectedNumbers FROM Users am WHERE am.userID = inId;
DELETE FROM UserLogs WHERE
FIND_IN_SET(UserLogs.User_Number, affectedNumbers) AND
NOT FIND_IN_SET(UserLogs.LogType, inIgnoreLogTypes);
奇怪,因为没有错误。。。。现在它起作用了