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

标签 mysql sql

我有一张这样的 table

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 查询来获取最近创建或更新的记录。我试图做的是编写一个带有 order by 子句的 sql 查询 added_date 和 modified_date 像这样

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

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

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

有什么想法吗?

最佳答案

你可能想要这个:

ORDER BY GREATEST(added_date, modified_date) DESC LIMIT 10

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

关于mysql - 从单个表中获取前 10 个最近更新或创建的记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9873905/

相关文章:

python解析nginx日志

c# - 这个SQL查询,注入(inject)安全吗

mysql - 当表2值不存在时,从表1中获取记录并从另一个表中加入它

MySQL 优化查询 COUNT-ing DISTINCT 值或 NULL IF NO ROWS

mysql - 查找列中最常见的条目 - SQL

android - MySQL TIMESTAMP 行为异常

sql - 如何从特定数据库下载所有存储过程

mysql - 在mysql中连接两个表时使用一个表的限制

mysql - Microsoft SQL Server 相当于此 MySQL 查询

mysql - MySQL 是否会就地轮转日志?