Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/55.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
如何将ID列表传递给MySQL存储过程?_Mysql_Stored Procedures - Fatal编程技术网

如何将ID列表传递给MySQL存储过程?

如何将ID列表传递给MySQL存储过程?,mysql,stored-procedures,Mysql,Stored Procedures,我正在编写一个存储过程,它应该将其参数传递给过程体中查询的(…)部分中的,如下所示: DELIMITER // CREATE PROCEDURE `get_users_per_app` (id_list TEXT) BEGIN SELECT app_id, GROUP_CONCAT(user_id) FROM app_users WHERE app_id IN (id_list) GROUP BY app_id; END// DELIMITER ; 这显然不起作用,因为当我传递一个

我正在编写一个存储过程,它应该将其参数传递给过程体中查询的(…)部分中的
,如下所示:

DELIMITER //

CREATE PROCEDURE `get_users_per_app` (id_list TEXT)
BEGIN
    SELECT app_id, GROUP_CONCAT(user_id) FROM app_users WHERE app_id IN (id_list) GROUP BY app_id;
END//

DELIMITER ;
这显然不起作用,因为当我传递一个文本值时,
id\u list
被插值为一个整数,并且只考虑第一个id,并在
IN()
条件中使用

我意识到这种特殊类型的过程可以被包含的查询代替,但我认为我的问题仍然存在——如果我需要传递这种数据怎么办


我还意识到,这种查询方法可能不是最佳实践,但在我的用例中,它实际上比返回一个简单的ID-ID对列表要好。

您应该能够使用MySQL来使用ID列表:

CREATE PROCEDURE `get_users_per_app` (id_list TEXT)
BEGIN
    SELECT
        app_id, GROUP_CONCAT(user_id)
    FROM
        app_users
    WHERE
        FIND_IN_SET(app_id, id_list) > 0
    GROUP BY app_id;
    ...

请查看我完全忘记在_SET()中查找_的答案,也感谢上面的评论。