我有这样的桌子
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查询以获取已创建或更新的最新记录。我试着做的是像这样在desc上用add_date和modified_date编写带有order by子句的sql查询
Select * from TEST_A order by added_date desc, modified_date desc limit 10;
但这给我记录的顺序是最新的addd_date,然后是最新的Modifyed_date,这对我来说是不正确的
它应该如何工作是如果我修改或添加一条记录,那么它应该是列表中的第一条记录。我想到的一个解决方案是将Modifyed_date和addd_date与当前系统日期进行比较并进行相应安排,但是如果我必须显示记录而未指定任何限制,这种查询将非常缓慢。基本上,我在搜索功能中使用这种类型的查询。
有什么想法吗?
最佳答案
您可能想要这样:
ORDER BY GREATEST(added_date, modified_date) DESC LIMIT 10
有了适当的索引,应该还可以。如果这是一张巨大的桌子,那么使用KernelM提供的解决方案可能会更好
关于mysql - 从单个表中获取前10条最近更新或创建的记录,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/9873905/