MySQL-如何在in子句中使用具有逗号分隔字符串值的输入参数

MySQL-如何在in子句中使用具有逗号分隔字符串值的输入参数,mysql,split,Mysql,Split,我必须根据字符串类型的列在MySQL中查询一个表 ----------------------------------- id | lookupkeys | productid | ----------------------------------- 1 | key1 | 5GEH03 | 2 | key2 | 7445DW | 3 | key3 | 9DSFDF | 4 | key4

我必须根据字符串类型的列在MySQL中查询一个表

-----------------------------------
id  | lookupkeys  |   productid  |
-----------------------------------
1   |   key1      |     5GEH03   |
2   |   key2      |     7445DW   |
3   |   key3      |     9DSFDF   |
4   |   key4      |     5GEH03   |
5   |   keyN      |     7445DW   |
-----------------------------------
在in子句中使用的单个输入参数中接受多个值(逗号分隔)的存储过程

Input : @keys = "key1,key5,key19,key22"
Query : SELECT * FROM MyTable WHERE lookupkeys IN ("key1","key5","key19","key22");
所以基本上我需要一种方法,如何让这个逗号分隔的输入成为IN子句的各个值

下面是一个虚拟sp

CREATE DEFINER=`xxx_xx`@`%` PROCEDURE `sp_demo_fetch_products`(
    IN v_lookupkeys VARCHAR(200)
    )
BEGIN
        SELECT * FROM products_lookup WHERE lookupkeys IN(here I want to use v_lookupkeys)
        AND CONDITION_1
        AND CONDITION_2
        ORDER BY popularity DESC;
END$$

显示存储过程代码和
调用
?如果存储过程中的
@keys
设置为
set@keys:=
,或多或少类似于
set@keys:=p_in_key_参数
,那么应该可以在(@keys)中使用
为什么有存储过程?我在这里看不到任何“程序性”的东西!?!但事实上,我不知道IN子句中以逗号分隔的单个值的输入是什么意思。
“为什么有存储过程?我看不出这里有什么‘过程性’?”非常同意@草莓,在这里使用存储过程确实是不合理的,我想在看到完整的存储过程代码之前先做一个注释。这是一个伪代码。用dummy sp更新了我的问题。希望有帮助