如何使用WHERE IN mysql存储过程

fly*_*sic 6 mysql stored-procedures

如何传递数组并在存储过程中使用WHERE IN?

我需要连接输入字符串或什么?

让我们说

DELIMITER $$
DROP PROCEDURE IF EXISTS `abc`.`table1`$$
CREATE PROCEDURE  `abc`.`test`
(IN somestring VARCHAR(255))
BEGIN
    SELECT * FROM abc.table1 
    WHERE flight_type IN somestring
END $$
DELIMITER ;
Run Code Online (Sandbox Code Playgroud)

Pen*_*m10 4

您可以使用字符串连接和 PREPARE 语句来运行动态构建的查询。

somestring必须以有效的 SQL 格式构建,例如'1','2','3'

DELIMITER $$
DROP PROCEDURE IF EXISTS `abc`.`table1`$$
CREATE PROCEDURE  `abc`.`test`
(IN somestring VARCHAR(255))
BEGIN
    @s=CONCAT("
    SELECT * FROM abc.table1 
    WHERE flight_type IN (",somestring,");")
    PREPARE stmt FROM @s;
    EXECUTE @s;
END $$
DELIMITER ;
Run Code Online (Sandbox Code Playgroud)