2012-03-26 72 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; ?