上面这种如果有一条新数据创建,updatetime为空,也不会取这个最新创建的数据
时间: 2024-03-27 21:36:45 浏览: 47
MySQL 多表关联一对多查询实现取最新一条数据的方法示例
如果存在 `updatetime` 为空的情况,可以在 `ORDER BY` 子句中再添加一个排序条件,将 `updatetime` 为空的记录放到最后,示例如下:
```
SELECT * FROM table_name
ORDER BY
GREATEST(create_time, IFNULL(update_time, '0000-00-00 00:00:00')) DESC,
update_time DESC
LIMIT 1;
```
在这个查询中,我们使用了 `IFNULL` 函数来处理 `updatetime` 为空的情况,将其替换为一个具有较小值的时间(如 `'0000-00-00 00:00:00'`),以便进行比较。然后,我们首先按照最新的时间值进行降序排序,如果存在 `updatetime` 为空的记录,它们的最新时间值会被替换为 `'0000-00-00 00:00:00'`,并被放到最后面。接着,我们在第一级排序条件的基础上,对 `update_time` 进行了降序排序,以确保在同一时间值的情况下,修改时间更晚的记录被排在前面。
这样,无论是创建时间还是修改时间,都会被考虑在内,能够取到最新的记录,即使 `updatetime` 为空的记录也会被正确处理。
阅读全文