【问题标题】:Get top 10 most recent updated or created records from a single table从单个表中获取前 10 条最近更新或创建的记录
【发布时间】:2012-03-26 22:26:11
【问题描述】:

我有一张这样的桌子

CREATE TABLE `TEST_A` (
`test_a_id` int(11) NOT NULL AUTO_INCREMENT,
`added_by` int(11) DEFAULT NULL,
`added_date` datetime DEFAULT NULL,
`modified_by` int(11) DEFAULT NULL,
`modified_date` datetime DEFAULT NULL,
 PRIMARY KEY (`test_a_id`)
);

我需要形成一个 MYSQL 查询来获取最近创建或更新的记录。我试图做的是在added_date和modified_date上写一个带有order by子句的sql查询,像这样

Select * from TEST_A order by added_date desc, modified_date desc limit 10;

但这给了我最近添加日期的记录,然后是最近的修改日期,这对我来说是不正确的

如果我修改或添加一条记录,它应该如何工作,那么它应该是列表中的第一个。我想到的一个解决方案是将 modified_date 和 added_date 与当前系统日期进行比较并相应地安排它们,但如果我必须在不指定任何限制的情况下显示记录,这种查询会非常慢。基本上我在我的搜索功能中使用这种类型的查询。

有什么想法吗?

【问题讨论】:

  • 改变added_date和modified_date的顺序,像这样:SELECT * FROM TEST_A ORDER BY modified_date desc, added_date desc LIMIT 10;

标签: mysql sql


【解决方案1】:

你可能想要这个:

ORDER BY GREATEST(added_date, modified_date) DESC LIMIT 10

有了适当的索引,它应该还是可以的。如果这是一张巨大的桌子,那么KernelM 这里提供的解决方案可能会更好

【讨论】:

    【解决方案2】:

    我会在插入时设置 modified_date(与 added_date 相同),所以您只需要在 modified_date 之前订购。

    【讨论】:

      【解决方案3】:

      SELECT * FROM TEST_A ORDER BY modified_date DESC, added_date DESC LIMIT 10; ?

      【讨论】:

        猜你喜欢
        • 2018-08-02
        • 1970-01-01
        • 1970-01-01
        • 2011-03-08
        • 1970-01-01
        • 2013-06-14
        • 2012-12-10
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多