我正在编写一个存储过程,应该将它的参数传递给过程体中的IN (..)
查询部分,就像这样:
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_list
被解释为整数,并且只有第一个 ID 被考虑并用于 IN()
条件中。
我意识到这种特定类型的过程可以用包含在查询中替代,但我认为我的问题仍然存在 - 如果我需要传递此类数据怎么办?
我也意识到这种查询方法可能不被视为最佳实践,但在我的使用案例中,它比返回 ID-ID 对的平面列表更好。