2012-03-26 61 views
0

10最近更新或创建记录我有这样获取顶级单个表

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写有秩序的SQL查询,并与递减MODIFIED_DATE这样

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

,但是这给了我记录最近ADDED_DATE的顺序,然后再最近MODIFIED_DATE这是不正确对我来说

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

有什么想法?

+0

更改added_date和modified_date的顺序,如下所示:'SELECT * FROM TEST_A ORDER BY modified_date desc,added_date desc LIMIT 10;' – hjpotter92 2012-03-26 14:25:56

回答

2

我会在插入时设置modified_date(与added_date相同),然后您只需按modified_date进行排序。

3

你可能想这样的:

ORDER BY GREATEST(added_date, modified_date) DESC LIMIT 10 

有了适当的索引,它应该仍然是相当好的。如果这是一个巨大的桌子,那么你可能会更好使用KernelM这里提供的解决方案

0

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