gpt4 book ai didi

MySql 删除 find_in_set 不起作用的地方

转载 作者:行者123 更新时间:2023-11-29 17:20:20 24 4
gpt4 key购买 nike

我有一个包含多个部分的 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(Select ...)”上列表。

我检查过,变量“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?

我检查了两组,它们是逗号分隔的整数...

最佳答案

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

DELETE FROM UserLogs WHERE
FIND_IN_SET(UserLogs.User_Number, affectedNumbers) AND
NOT FIND_IN_SET(UserLogs.LogType, inIgnoreLogTypes);

奇怪,因为没有错误......现在它可以工作了。

关于MySql 删除 find_in_set 不起作用的地方,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51286812/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com