使用MySQL凡在笨条款使用MySQL凡在笨条款(Using Mysql WHERE IN clau

2019-06-01 01:53发布

我有以下MySQL查询。 你能告诉我怎么写笨的方式相同的查询?

SELECT * FROM myTable 
         WHERE trans_id IN ( SELECT trans_id FROM myTable WHERE code='B') 
         AND code!='B'

Answer 1:

您可以使用笨的子查询的方式为这个目的,你将不得不破解笨做到这一点。 像这样
进入系统/数据库/ DB_active_rec.php从这些功能中删除公共或受保护的关键字

public function _compile_select($select_override = FALSE)
public function _reset_select()

现在,子查询写入可用,现在这里是有活动记录查询

$this->db->select('trans_id');
$this->db->from('myTable');
$this->db->where('code','B');
$subQuery = $this->db->_compile_select();

$this->db->_reset_select();
// And now your main query
$this->db->select("*");
$this->db->where_in("$subQuery");
$this->db->where('code !=', 'B');
$this->db->get('myTable');

而事情做。 干杯!!!
注意:使用子查询,则必须使用

$this->db->from('myTable')

代替

$this->db->get('myTable')

它运行查询。
关注此过

我怎么能改写这个SQL到CodeIgniter的活动记录?

注:在Codeigntier 3这些功能都已经公开,所以你并不需要破解它们。



Answer 2:

$data = $this->db->get_where('columnname',array('code' => 'B'));
$this->db->where_in('columnname',$data);
$this->db->where('code !=','B');
$query =  $this->db->get();
return $query->result_array();


Answer 3:

试试这个:

$this->db->select("*");
$this->db->where_in("(SELECT trans_id FROM myTable WHERE code = 'B')");
$this->db->where('code !=', 'B');
$this->db->get('myTable');

注意函数:$ this-> DB->选择( “*”); 是可选的,当您选择从表中的所有列



Answer 4:

试试这个:

return $this->db->query("
     SELECT * FROM myTable 
     WHERE trans_id IN ( SELECT trans_id FROM myTable WHERE code='B') 
     AND code!='B'
     ")->result_array();

不活跃的纪录,但就是笨的办法http://codeigniter.com/user_guide/database/examples.html看到标准查询多个结果(数组版本)节



文章来源: Using Mysql WHERE IN clause in codeigniter