使用WHERE_IN子句从具有多个值的字段中进行SELECT查询

时间:2016-11-09 07:09:42

标签: mysql sql codeigniter views where-in

以下是VIEW search_result skills列包含 GROUP_CONCAT 的值,其中包含其他表中的值。

search_result VIEW

现在我正在尝试使用 where_in 子句从此VIEW中选择值,如下所示:

$s_id = array('2D Design','3D Design');

$this->db->select('id');
$this->db->from('search_result');
$this->db->where_in('skills',$s_id);  

执行此查询时,结果只有3行,即仅包含 2D Design 2D Design 的技能。

result on executing same query in phpmyadmin

我想显示包含任何技能的所有行作为输出。所以请帮我这样做。

1 个答案:

答案 0 :(得分:3)

我认为你需要在这里使用FIND_IN_SET

$s_id = array('2D Design','3D Design');

$this->db->select('id');
$this->db->from('search_result');
$this->db->where("FIND_IN_SET('$s_id[0]', skills) != ", 0);

for($x=1; $x < count($s_id); $x++) {
    $this->db->or_where("FIND_IN_SET('$s_id[$x]', skills) != ", 0);
}

这里的逻辑是,您实际上希望在数组中每个技能上使用FIND_IN_SET,以查看它是否包含在表格中的CSV技能列表中。您无法通过一次调用执行此操作,并且每项检查都应在WHERE子句中进行OR运算。