尝试过的代码:
$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 是正确的方法吗?任何有经验的人都能弄清楚为什么它没有按预期工作,或者我只是做错了?
最佳答案
$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)');
试一试(未经测试)。
关于php - CodeIgniter Active Record - 防止重复,按日期排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19250642/