php-CodeIgniter:如何执行选择(不同的字段名称)MySQL查询

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

示例SQL:

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

如何在CodeIgniter内部进行这种查询?

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

Ian asked 2020-02-18T06:18:16Z
5个解决方案
99 votes
$record = '123';

$this->db->distinct();

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

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

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

然后

$query->num_rows();

应该走很长的路要走。

Mark Unwin answered 2020-02-18T06:18:34Z
10 votes

用以下代码尝试一下

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();  
}
useranon answered 2020-02-18T06:18:54Z
10 votes

您也可以运行-> select('DISTINCT`field`',FALSE),第二个参数告诉CI不要转义第一个参数。 使用第二个参数时,输出将是SELECT DISTINCT`field`,而不是没有第二个参数时,输出将是SELECT`DISTINCT` field`

jonwayne answered 2020-02-18T06:19:15Z
1 votes

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

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

计算返回值

joash answered 2020-02-18T06:19:39Z
1 votes

简单但有用的方法:

$query = $this->db->distinct()->select('order_id')->get_where('tbl_order_details', array('seller_id' => $seller_id));
        return $query;
Sani Kamal answered 2020-02-18T06:19:59Z
translate from https://stackoverflow.com:/questions/656622/codeigniter-how-to-do-a-select-distinct-fieldname-mysql-query