IN()在mysql存储过程中不起作用

IN()在mysql存储过程中不起作用,mysql,stored-procedures,Mysql,Stored Procedures,谁能帮帮我吗 关于 曼珠克试试这个 DELIMITER $$ USE `employee`$$ DROP PROCEDURE IF EXISTS `selectemployeebyids`$$ CREATE DEFINER=`root`@`localhost` PROCEDURE `selectemployeebyids`(IN empid VARCHAR(100)) BEGIN SELECT empname,salary,department from emp where emp

谁能帮帮我吗

关于

曼珠克

试试这个

DELIMITER $$

USE `employee`$$

DROP PROCEDURE IF EXISTS `selectemployeebyids`$$

CREATE DEFINER=`root`@`localhost` PROCEDURE `selectemployeebyids`(IN empid VARCHAR(100))
BEGIN
    SELECT empname,salary,department from emp where empid IN (empid) ORDER BY empid;
    END$$

DELIMITER ;

在尝试使用lot而不是
IN()
后,
find\u IN\u SET()
对我很有效

DELIMITER $$ 

USE `employee`$$ 

DROP PROCEDURE IF EXISTS `selectemployeebyids`$$ 

CREATE DEFINER=`root`@`localhost` PROCEDURE `selectemployeebyids`(IN empid_in VARCHAR(100)) 
BEGIN 
    SELECT empname,salary,department from emp 
        where concat(',',empid_in,',') like concat('%,'cast  (empid as varchar(10)),',%')
        ORDER BY empid; 
   END$$ 


 DELIMITER ; 

中不接受带有逗号分隔值的字符串,它只接受逗号分隔值。实际上,通过上面的过程,我想从employee表中检索empname、salary、department,employee id为101102103和104@Madhivanan当前位置这是一个可怕的解决方案,它将导致fullscan@zerkms,然后,您需要一个表值拆分函数并与原始表连接。发布代码时,请突出显示它并点击
{}
代码按钮(或将代码行缩进四个空格)
DELIMITER $$

USE `employee`$$

DROP PROCEDURE IF EXISTS `selectemployeebyids`$$

CREATE DEFINER=`root`@`localhost` PROCEDURE `selectemployeebyids`(IN empid VARCHAR(100))
BEGIN
    SELECT empname,salary,department from emp where empid FIND_IN_SET(empid) ORDER BY empid;
    END$$

DELIMITER ;