Я пишу хранимую процедуру, которая должна передать свои аргументы в 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
интерполируется как целое число, и только первый идентификатор рассматривается и используется внутри условия IN()
.
Я понимаю, что этот конкретный тип процедуры можно заменить вместо содержащегося запроса, но я думаю, что мой вопрос все еще стоит - что, если мне нужно было передавать данные такого рода?
Я также понимаю, что этот подход запроса не может считаться наилучшей практикой, но в моем случае это действительно лучше, чем возврат плоского списка пар ID-ID..