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

标签 mysql sql codeigniter view where-in

以下是一个 VIEW search_resultskills 列包含与其他表中的值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 设计2D 设计 的技能。

result on executing same query in phpmyadmin

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

最佳答案

我认为你需要在这里使用 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 子句中一起进行或运算。

关于mysql - 使用 WHERE_IN 子句从具有多个值的字段中进行 SELECT 查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40501655/

相关文章:

php - CodeIgniter 搜索查询

PHP:警告:mysql_fetch_array() 期望参数 1 为资源

mysql - 基于另一列的外键

mysql - codeigniter 使用 case 语句进行连接

php - 如何调试调用SQL语句的AJAX(PHP)代码?

php - SQL Query 找不到获取结果的方法

php - 操作数类型冲突 : datetime2 is incompatible with int (Between)

php - 无法显示使用 PDO 查询的结果

html - MySQL - 从内容列内的 href 属性中存在的动态 url 中搜索并替换文本 (".html")

java - 不使用 int onebyte 将字符串写入 OutputStream