DELIMITER $$DROP PROCEDURE IF EXISTS `test`$$CREATE PROCEDURE `test`(IN ids varchar(36))   select 
id

from tab_a
where id in (ids);    END$$DELIMITER ;call test('1,2,3');
怎么样子查出id为1, 2 & 3的记录? 谢谢!

解决方案 »

  1.   

    select id
    from tab_a
    where instr(','+ids+',',','+id+',')>0;
    == 思想重于技巧 ==
      

  2.   

    in 能用索引,instr(','+ids+',',','+id+',') 不能
    性能的差别在这里
      

  3.   

    DELIMITER $$ DROP PROCEDURE IF EXISTS `test`$$ CREATE PROCEDURE `test`(IN ids varchar(36))   SET @sql = concat("select  id from tab_a where id in (",ids,"); ");
      PREPARE stmt_name FROM @sql ;
      EXECUTE stmt_name ;END$$ DELIMITER ; call test('1,2,3');