你能在WHERE IN(SELECT @var)中使用mysql @variable吗?

时间:2013-09-27 17:41:53

标签: mysql

你能在WHERE IN子句中使用mysql @variable吗?

我试过了:

SET @inlist =   
(    
SELECT GROUP_CONCAT(product_id) FROM products WHERE `status` = "new"    
);

SELECT @inlist;  -- shows comma separated values;

SELECT * from products where product_id IN (SELECT @inlist);    

只会返回列表中的第一个产品。

我知道GROUP_CONCAT有一个默认的1k限制。

2 个答案:

答案 0 :(得分:2)

使用FIND_IN_SET

尝试此操作
    SELECT * from products where FIND_IN_SET(product_id , @inlist );  

答案 1 :(得分:2)

您可以使用动态SQL执行此操作:

PREPARE stmt FROM CONCAT('SELECT * from products where product_id IN (', @inlist, ')');
EXECUTE stmt;

如果您需要经常这样做,可以将它放在存储过程中,然后执行:

CALL yourProc(@inlist);