1、分别有2列「创建时间」「修改时间」
「创建时间」非空
「修改时间」可能为空
2、「最后一次保存时间」并不存在这一列
「修改时间」非空时__「最后一次保存时间」=「修改时间」
「修改时间」为空时__「最后一次保存时间」=「创建时间」
3、按「最后一次保存时间」排序
排序的时候 case when处理下
SELECT *
FROM TABLE
ORDER BY CASE
WHEN 修改时间 IS NOT NULL THEN 修改时间
ELSE 创建时间
END DESC;
有帮助的话 采纳一下
SELECT
创建时间,
修改时间,
CASE
WHEN 修改时间 IS NOT NULL THEN 修改时间
ELSE 创建时间
END AS 最后一次保存时间
FROM 数据表
ORDER BY 最后一次保存时间
根据问题描述,可以分为以下几个步骤来实现按照"最后一次保存时间"进行排序:
def get_last_save_time(row):
if row["修改时间"]:
return row["修改时间"]
else:
return row["创建时间"]
# 假设数据以字典列表的形式存在,其中每个字典表示一行数据
data = [
{"创建时间": "2022-01-01 09:00:00", "修改时间": None},
{"创建时间": "2022-01-02 10:00:00", "修改时间": "2022-01-02 12:00:00"},
{"创建时间": "2022-01-03 11:00:00", "修改时间": "2022-01-03 13:00:00"},
{"创建时间": "2022-01-04 12:00:00", "修改时间": None},
]
sorted_data = sorted(data, key=get_last_save_time)
SELECT * FROM 表名
ORDER BY COALESCE(修改时间, 创建时间);
以上是按照"最后一次保存时间"进行排序的简单方法。如果数据量较大,可能需要考虑性能优化的问题,比如使用索引来提高查询效率。但具体的优化方案需要根据实际情况进行设计和测试。