你能在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限制。
答案 0 :(得分:2)
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);