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 ペアのフラット リストを返すよりも実際には優れています。