-1

你可以在 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 限制。

4

2 回答 2

2

您可以使用动态 SQL 来做到这一点:

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

如果您需要经常执行此操作,您可以将其放入存储过程中,然后执行以下操作:

CALL yourProc(@inlist);
于 2013-09-27T17:55:47.520 回答
2

try this with FIND_IN_SET

    SELECT * from products where FIND_IN_SET(product_id , @inlist );  
于 2013-09-27T17:47:54.583 回答