54

我正在尝试检索字段中所有唯一值的计数。

示例 SQL:

SELECT count(distinct accessid) FROM (`accesslog`) WHERE record = '123'

如何在 CodeIgniter 中进行这种查询?

我知道我可以使用$this->db->query()并编写自己的 SQL 查询,但我还有其他要使用$this->db->where()的要求。如果我使用->query(),我必须自己编写整个查询。

4

5 回答 5

118
$record = '123';

$this->db->distinct();

$this->db->select('accessid');

$this->db->where('record', $record); 

$query = $this->db->get('accesslog');

然后

$query->num_rows();

应该有很长的路要走。

于 2009-03-18T01:55:26.980 回答
12

用下面的代码试试

function fun1()  
{  
   $this->db->select('count(DISTINCT(accessid))');  
   $this->db->from('accesslog');  
   $this->db->where('record =','123');  
   $query=$this->db->get();  
   return $query->num_rows();  
}
于 2009-03-19T11:55:34.750 回答
12

您也可以运行->select('DISTINCT `field`', FALSE)并且第二个参数告诉CI不要转义第一个参数。

使用第二个参数作为false,输出将SELECT DISTINCT `field`不是没有第二个参数,SELECT `DISTINCT` `field`

于 2014-06-10T19:55:24.517 回答
5

简单但有用的方法:

$query = $this->db->distinct()->select('order_id')->get_where('tbl_order_details', array('seller_id' => $seller_id));
        return $query;
于 2019-08-24T08:27:17.887 回答
4

由于计数是预期的最终值,因此在您的查询中

$this->db->distinct();
$this->db->select('accessid');
$this->db->where('record', $record); 
$query = $this->db->get()->result_array();
return count($query);

计算返回值

于 2018-11-15T05:05:08.363 回答