CodeIgniter Active Record - 防止重复,按日期排序

时间:2013-10-08 14:34:23

标签: php mysql codeigniter

尝试过的代码:

    $this->db->select('*');
    $this->db->from('documents_table');
    $this->db->order_by("last_modified_date", "desc");
    $this->db->group_by('document_id');

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

表格结构:

id,document_id,content,last_modified_date

问题:

系统的设计意味着在更新文档时,会使用相同的document_id和更新的内容创建实际的新记录。

现在我需要列表中显示的文档,但是如果它们是具有相同document_id的多个文档(基本上是文件的旧版本),则只应显示最新版本。当前代码仅输出第一个版本,因此需要切换。

group_by是正确的方法吗?任何有经验的人都可以解决为什么它不按预期工作,或者我只是做错了?

2 个答案:

答案 0 :(得分:1)

$this->db->select('*');
$this->db->from('documents_table');
$this->db->order_by("last_modified_date", "desc");    
$this->db->where('id IN (SELECT MAX(id) FROM documents_table GROUP BY document_id)');

试一试(未经测试)。

答案 1 :(得分:0)

 $this->db->select('MAX(id) , document_id , content , last_modified_date');
 $this->db->from('documents_table');
 $this->db->order_by("last_modified_date", "desc");
 $this->db->group_by('document_id');

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

未测试