0

我在 MySQL 中有一个存储函数get_parents_by_id()

但是当我尝试在 WHERE 条件下使用它时,它会产生错误。

例如:

SELECT id, parents, level 
FROM categories
WHERE parents IN get_parents_by_id(@id);

它不能正常工作,并且示例:

WHERE parents IN (SELECT get_parents_by_id(@id)); 

也不行。

帮助我的人,我在关于 MySQL 的书中找不到任何内容......

4

2 回答 2

0

它需要返回一个 id 数组,而不是包含逗号分隔 id 的字符串。

目前您的查询正在执行:-

SELECT id, parents, level 
FROM categories
WHERE parents IN '(0, 2, 3, 7)';
于 2013-07-01T20:24:28.793 回答
0

尝试find_in_set()

SELECT id, parents, level 
FROM categories
WHERE find_in_set(parents, get_parents_by_id(@id));

注意:这需要 get_parents_by_id() 返回逗号分隔的字符串 (varchar)。

注意 2:存储函数通常返回单个值,而不是结果集。

根据评论中的格式:

WHERE find_in_set(parents, 
    REPLACE(REPLACE(get_parents_by_id(@id), ')', ''), '(', ''));
于 2013-07-01T20:30:43.897 回答