在 codeigniter 中使用 Mysql WHERE IN 子句

2024-01-11

我有以下 mysql 查询。您能告诉我如何以 Codeigniter 的方式编写相同的查询吗?

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

您可以使用 codeigniter 的子查询方式来执行此操作,为此您将不得不破解 codeigniter。像这样
转到系统/数据库/DB_active_rec.php 从这些函数中删除 public 或 protected 关键字

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 Active Records? https://stackoverflow.com/questions/10502778/how-can-i-rewrite-this-sql-into-codeigniters-active-records/10546395#10546395

注意:在 Codeigniter 3 中,这些函数已经是公开的,因此您无需破解它们。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在 codeigniter 中使用 Mysql WHERE IN 子句 的相关文章

随机推荐