从单个表中获取前10个最新更新或创建的记录

时间:2012-03-26 14:21:17

标签: mysql sql

我有一张这样的表

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上编写一个带有order by子句的sql查询,在这里使用desc写一个带有的修改后的

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

但是这给了我最新的added_date顺序记录,然后是最近的modified_date,这对我来说是不正确的

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

有什么想法?

3 个答案:

答案 0 :(得分:3)

你可能想要这个:

ORDER BY GREATEST(added_date, modified_date) DESC LIMIT 10

使用适当的索引,它应该还是可以的。如果这是一个巨大的表,那么你可能会更好地使用KernelM提供的解决方案

答案 1 :(得分:2)

我会在插入时设置modified_date(与added_date相同),因此您只需要通过modified_date进行排序。

答案 2 :(得分:0)

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