Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/variables/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
MySQL:在WHERE IN子句上使用变量_Mysql_Variables - Fatal编程技术网

MySQL:在WHERE IN子句上使用变量

MySQL:在WHERE IN子句上使用变量,mysql,variables,Mysql,Variables,我开始疯狂地尝试将一组从GROUP_CONCAT获得的值数组用于WHERE IN语句,当GROUP_CONCAT只接受一个id时,它工作正常,但如果需要更多,它就不工作了 具体如下: START TRANSACTION; DECLARE @coupon_ids VARCHAR(MAX); -- Take one or more ids SET @coupon_ids:=(SELECT IFNULL( (SELECT GROUP_CONCAT(coupon_id) FROM some_table

我开始疯狂地尝试将一组从GROUP_CONCAT获得的值数组用于WHERE IN语句,当GROUP_CONCAT只接受一个id时,它工作正常,但如果需要更多,它就不工作了

具体如下:

START TRANSACTION;
DECLARE @coupon_ids VARCHAR(MAX);
-- Take one or more ids
SET @coupon_ids:=(SELECT IFNULL( (SELECT GROUP_CONCAT(coupon_id) FROM some_table WHERE order_id=(SELECT entity_id FROM sales_order WHERE increment_id=310033638) GROUP BY order_id),  (SELECT coupon_id FROM some_table WHERE coupon_id=310033638)));
SELECT @coupon_ids;
INSERT INTO some_table_gift VALUES (NULL,TRIM('whatever'),'','');
SET @lastid:=LAST_INSERT_ID();
-- Here if @coupon_ids is just one id, like 123 it works, if it is a list of them like 123,234,254 it doesn't works
UPDATE some_table SET owner_id=@lastid,is_gift=1 WHERE coupon_id IN (@coupon_ids);
COMMIT;
-- Same here
SELECT coupon_id,owner_id,is_gift FROM some_table WHERE coupon_id IN (@coupon_ids);
有人知道怎么处理这个吗


谢谢

优惠券id的存档类型是什么,如果不是任何数字类型,则它将不起作用

一种方法是,您可以在GROUP_CONCAT Write中为每个结果添加单引号

删除选择@优惠券\u ID


在查询中,在@优惠券\u id

组\u CONCAT中的优惠券\u id默认使用该分隔符时,请尝试此操作。选择@优惠券\u id仅用于获取报告。我尝试了“@coupon\u id”和用“,”plus“@coupon\u id”替换,但它不起作用:我编辑分隔符“,”并且在Where子句中,您需要通过编程语言在@coupon\u id周围添加双引号。比您在123234254中的in子句中的字符串更有用的函数是FIND_in_SET
GROUP_CONCAT(coupon_id SEPARATOR '","')