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

标签 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 是正确的方法吗?任何有经验的人都能弄清楚为什么它没有按预期工作,或者我只是做错了?

最佳答案

$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/

相关文章:

php - CodeIgniter 从 1.7.2 迁移到 2.0 返回空白页

php - 如何在 Laravel 5.1 中完成后捕获作业队列详细信息?

mysql - 使用 2 个表格进行计算并向第三个表格报告

mysql - 如何在列中执行MySQL智能文本搜索?

php - 如何在 codeigniter url 中传递 base64encode 字符?

php - 如何使用 Codeigniter 构建动态网站

php - 如何在 PHP/MYSQL 中将两个 mysql 查询作为一个执行?

php - 如何将嵌套 sql 查询转换为 zend 1.12 格式

php - 使用 php 和 mysql 从两个不同的表中获取记录?

mysql - SQL 查询需要很长时间才能运行