gpt4 book ai didi

mysql:将数组设置为变量以便在 "IN"子句中使用

转载 作者:行者123 更新时间:2023-11-29 11:08:24 26 4
gpt4 key购买 nike

我想将数组设置为变量,以便在“IN”子句的查询中使用它。下面的代码给了我一个错误,所以我不确定它是否可以在 mysql 中实现。

set @ids = (1,2,3,6);

select
sum(promotion_id IN @ids AND confirmed_at IS NOT NULL)
from blabla

我得到了两个不同的结果。也就是说,find_in_set 和 IN(@ids) 给出的结果相同,但与我从 IN(1,2,3) 得到的结果不同:

set @voda_prom ='1483, 2396, 2395, 1887';

SUM(FIND_IN_SET(promotion_id,@voda_prom) and confirmed_at IS NOT NULL)*1.0/ SUM(FIND_IN_SET(promotion_id,@voda_prom)) as p,
SUM(promotion_id IN(1483,2396,2395,1887) and confirmed_at IS NOT NULL)*1.0/ SUM(promotion_id IN(1483,2396,2395,1887)) as p_check,
SUM(promotion_id IN(@voda_prom) and confirmed_at IS NOT NULL)*1.0/ SUM(promotion_id IN(@voda_prom)) as p_1,

最佳答案

使用find_in_set而不是in

set @ids = '1,2,3,6';
select
SUM(CASE WHEN FIND_IN_SET(promotion_id,@ids) AND confirmed_at IS NOT NULL THEN 1 ELSE 0 END)
from blabla

该函数与php中的in_array相同

关于mysql:将数组设置为变量以便在 "IN"子句中使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41013398/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com