mysql find_in_set 和 in 区别_mysql-where_in和find_in_set之间的区别

我正在研究一个联接查询,其中我必须从包含逗号分隔值的列中获取数据.例如allowed_activity包含1,2,3,4,5,6

这是被允许的activity_id.

因此,在查询中,我正在检查是否允许当前活动,为此,我使用了where_in并在where条件中尝试了find_in_set.

这是查询的一部分:

$this->db->where_in('a.allowed_activity',$activity_id);

//And With FIND_IN_SET

$this->db->where("FIND_IN_SET($activity_id, a.allowed_activity) !=",0);

问题或困惑

当我使用where_in时,不会得到结果.但是,如果我使用FIND_IN_SET,它将返回所需的结果.我以为where_in可以完成任务,但没有.

Just Want to know why find_in_set working differently than

where_in

Because of both the function work same as finding the data is in comma separated list.

这是完整的查询:

SELECT mycolumns

FROM `table1` as `ea`

LEFT OUTER JOIN `table2` as `a` ON `ea`.`package_id` = `a`.`id`

LEFT OUTER JOIN `table3` as `e` ON `ea`.`employer_id` = `e`.`id`

WHERE `ea`.`card_id` > 0

AND FIND_IN_SET(6, a.allowed_activity) !=0

AND `ea`.`id` = '6'

ORDER BY `ea`.`creation_date` DESC

我正在使用Codeigniter Active记录.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值