-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 に答える