gpt4 book ai didi

使用用户定义函数的 SQL 查询中的 MySQL IN 子句

转载 作者:行者123 更新时间:2023-11-29 07:15:36 25 4
gpt4 key购买 nike

我正在使用以下查询来更新特定主题的所有子项。

UPDATE topics SET reuse = 0 WHERE topic_id IN (SELECT GetChildTopics(187));

哪里

SELECT GetChildTopics(187);

返回“188,190,189”,但我的更新查询仅更新 topic_id = 188 的第一行,而不是仅更新第一个主题,它应该更新所有 3 个主题。

当我手动输入值时,它工作正常。

UPDATE topics SET reuse = 0 WHERE topic_id IN (188,190,189);

任何人都可以建议我在这里做错了什么吗?

这是 GetChildTopics MySQL 函数的代码

    CREATE DEFINER=`root`@`localhost` FUNCTION `GetAncestry`(GivenID INT) RETURNS varchar(1024) CHARSET latin1
DETERMINISTIC
BEGIN
DECLARE rv VARCHAR(1024);
DECLARE cm CHAR(1);
DECLARE ch INT;

SET rv = '';
SET cm = '';
SET ch = GivenID;
WHILE ch > 0 DO
SELECT IFNULL(parent_topic_id,-1) INTO ch FROM
(SELECT parent_topic_id FROM topic_list WHERE id = ch) A;
IF ch > 0 THEN
SET rv = CONCAT(rv,cm,ch);
SET cm = ',';
END IF;
END WHILE;
RETURN rv;
END

最佳答案

试试这个;)

UPDATE topics SET reuse = 0 WHERE FIND_IN_SET(topic_id, GetChildTopics(187));

关于使用用户定义函数的 SQL 查询中的 MySQL IN 子句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38072025/

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