我有一张这样的表
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与当前系统日期进行比较并相应地进行排列,但如果我必须在不指定任何限制的情况下显示记录,这种查询会非常慢。基本上我在我的搜索功能中使用这种类型的查询。
有什么想法?
答案 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; ?