【问题标题】:How to use 'DISTINCT' in Codeigniter Active Records?如何在 Codeigniter Active Records 中使用“DISTINCT”?
【发布时间】:2016-06-15 12:04:34
【问题描述】:

我有一个使用活动记录的查询。

$this->db->select('reg.users_id,reg.registration_id,reg.device_type');
$this->db->join('users as usr','usr.users_id = reg.users_id','left');
$this->db->where('usr.users_status',1);
$this->db->where('reg.users_id',91);
$query = $this->db->get('users_gcm_registration as reg');

我想获取DISTINCT(registration_id)

我该怎么做?

【问题讨论】:

  • 你是怎么回答下面的问题的?
  • 投了反对票,因为忽略了帮助你的人。

标签: php activerecord codeigniter-2


【解决方案1】:

你可以使用 distinct as

$this->db->distinct('reg.registration_id');
$this->db->select('reg.users_id,reg.device_type');
....

但最好使用group_by

$this->db->select('reg.users_id,reg.registration_id,reg.device_type');
$this->db->join('users as usr','usr.users_id = reg.users_id','left');
$this->db->where('usr.users_status',1);
$this->db->where('reg.users_id',91);
$this->db->group_by('reg.registration_id');// add group_by
$query = $this->db->get('users_gcm_registration as reg');

【讨论】:

  • ->group_by() 绝对是前进的方向。请记住,您也可以链接函数。即:$this->db->select('*')->where('result.whatever', '24');
  • distinct() 需要一个布尔类型值。如果您传递任何非布尔值,则该值将被忽略,true 将用作传递的值。检查您的 CI 项目中的源代码...public function distinct($val = TRUE) { $this->qb_distinct = is_bool($val) ? $val : TRUE; return $this; }
【解决方案2】:

只需使用$this->db->distinct(); 即可。它将区分价值...

希望它对你有用...

【讨论】:

    【解决方案3】:

    你有两种方法来完成这个

    1. 以 Codeigniter 方式
    2. 以 SQL 方式

    Codeigniter方式

    您可以在活动记录查询中使用$this->db->distinct()

    $this->db->distinct();
    $this->db->get('table_name');
    ...
    

    以 SQL 方式

    $query = $this->db->query("SELECT DISTINCT * FROM table_name ...");
    $result = $query->result_array();
    return $result;
    

    【讨论】:

      【解决方案4】:
         $query = $this->db->select('registration_id')
                      ->distinct('registration_id')
                      ->from('reg')
                      ->get(); 
       return $query->result();
      

      【讨论】:

        【解决方案5】:
        $this->db->select('reg.users_id,DISTINCT(reg.registration_id),reg.device_type'); 
           $this->db->join('users as usr','usr.users_id = reg.users_id','left');
        $this->db->where('usr.users_status',1);
        $this->db->where('reg.users_id',91);
        $query = $this->db->get('users_gcm_registration as reg');
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2014-11-14
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多