1

尝试过的代码:

    $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 , 内容 , last_modified_date

问题:

系统的设计意味着当文档更新时,会创建一个具有相同 document_id 和更新内容的实际新记录。

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

group_by 是正确的方法吗?任何有经验的人都可以弄清楚为什么它不能按预期工作,还是我做错了?

4

2 回答 2

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)');

试一试(未经测试)。

于 2013-10-08T14:40:00.947 回答
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();

未经测试

于 2013-10-08T14:46:24.797 回答