SELECT 从具有多个值的字段查询 WHERE_IN 子句
SELECT query from field having multiple value with WHERE_IN clause
下面是一个VIEWsearch_result。 skills
列包含 GROUP_CONCAT 中的值以及其他 table.
中的值
现在我正尝试使用 where_in 子句从这个 VIEW 中 select 值,如下所示:
$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 设计 或 2D 设计 的技能。
我想显示所有包含任何该技能的行作为输出。所以请帮我做这个。
我认为你需要在这里使用 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);
}
这里的逻辑是您实际上想对数组中的 each 技能使用 FIND_IN_SET
以查看它是否包含在您的 CSV 技能列表中table。您不能通过一次调用来完成此操作,并且每个检查都应该在 WHERE
子句中一起进行或运算。
下面是一个VIEWsearch_result。 skills
列包含 GROUP_CONCAT 中的值以及其他 table.
现在我正尝试使用 where_in 子句从这个 VIEW 中 select 值,如下所示:
$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 设计 或 2D 设计 的技能。
我想显示所有包含任何该技能的行作为输出。所以请帮我做这个。
我认为你需要在这里使用 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);
}
这里的逻辑是您实际上想对数组中的 each 技能使用 FIND_IN_SET
以查看它是否包含在您的 CSV 技能列表中table。您不能通过一次调用来完成此操作,并且每个检查都应该在 WHERE
子句中一起进行或运算。