【发布时间】:2018-01-25 12:32:17
【问题描述】:
我正在处理一个联接查询,在该查询中我必须从包含逗号分隔值的列中获取数据。例如 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 可以完成任务,但它没有。
只是想知道为什么
find_in_set的工作方式与where_in由于这两个功能的工作方式与查找数据在逗号分隔列表中相同。
这是完整的查询:
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 活动记录。
【问题讨论】:
标签: mysql codeigniter where-in find-in-set