Mysql 如何根据某些条件从数组中获取数据

Mysql 如何根据某些条件从数组中获取数据,mysql,codeigniter,Mysql,Codeigniter,我有表T1和T2。在T1中,我有一列cat_id在数组中用逗号分隔整数值,例如 row1=1; row2=1,41; row3=40,1 在T2中,我的列id具有单个整数值,例如 row1=1; row2=40; row3=41; row4=0 现在,根据从T2中选择的id,我需要T1中的数据 我的问题是如何应用T1中的条件。我正在使用CodeIgniter。我试过这样做 $this->db->select('*'); $this->db->where('status

我有表
T1
T2
。在
T1
中,我有一列
cat_id
在数组中用逗号分隔整数值,例如

row1=1; row2=1,41; row3=40,1
T2
中,我的列id具有单个整数值,例如

row1=1; row2=40; row3=41; row4=0
现在,根据从
T2
中选择的id,我需要
T1
中的数据

我的问题是如何应用
T1
中的条件。我正在使用CodeIgniter。我试过这样做

$this->db->select('*');
$this->db->where('status', 'yes');               
$this->db->where('cat', '1');
$this->db->like('category_id', '1');
$this->db->or_like('category_id', ',1'); 
$this->db->or_like('category_id', '1,');
$this->db->get('T1')->result_array();
但是对于
id=1
,问题仍然存在,如果
T1
as 51,5中有数据,它也会被选中。 我该如何解决这个问题。提前感谢

尝试使用“在集合中查找”

SELECT 
    * 
FROM T1
LEFT JOIN T2 on FIND_IN_SET(T2.id, T1.cat_id)
WHERE T1.status = 'yes' AND T2.cat = 1
如果您认为额外的记录即将出现,您可以使用内部连接而不是左连接。 内码点火器

$sql_query  =   "
            SELECT 
                * 
            FROM T1
            LEFT JOIN T2 on FIND_IN_SET(T2.id, T1.cat_id)
            WHERE T1.status = 'yes' AND T2.cat = 1  
            ";

$this->db->query($sql_query);           

对于上述问题,使用in_array()也有帮助

$this->db->select('cat_id');
$row = $this->db->get('T1')->result_array();

$list = array();
foreach($row as $ind=>$val){
  $c_id = explode(',', $row['cat_id);
  if(in_array('1', $c_id){
    array_push($list, $val)
  }
}

不客气,但最好的做法是使用分隔行和逗号分隔列