我有一个包含两列
updated_at
和children_updated_at
的数据库表,我想首先基于SQL函数GREATEST(updated_at, children_updated_at)
显示最新修改的记录。
我想要生成的 SQL 查询是:
select * from Account ORDER BY GREATEST(updated_at, children_updated_at);
输出应首先以
updated_at
或 children_updated_at
中的最高值排序。
像这样的输入表:
名字 | 更新于 | children_updated_at |
---|---|---|
用户1 | 2024-05-07 10:00:00.000 | 2024-05-07 13:00:00.000 |
用户2 | 2024-05-07 11:00:00.000 | 2024-05-07 09:00:00.000 |
用户3 | 2024-05-07 12:00:00.000 | 2024-05-07 10:00:00.000 |
应该生成如下输出:
[
{ "name": "User 1",
"updated_at": "2024-05-07 10:00:00.000",
"children_updated_at": "2024-05-07 13:00:00.000"
},
{ "name": "User 3",
"updated_at": "2024-05-07 12:00:00.000",
"children_updated_at": "2024-05-07 10:00:00.000"
},
{ "name": "User 2",
"updated_at": "2024-05-07 11:00:00.000",
"children_updated_at": "2024-05-07 09:00:00.000"
}
]
我在 Prisma 文档中找不到任何有关使用
GREATEST()
或其他组合列的 SQL 函数的信息。
实际的查询要复杂得多,因此原始 sql 查询对我来说不起作用。
有没有办法使用 Prisma ORM 来实现这个需求?
MySQL查询:
select *
from inputTable
order by
GREATEST(
COALESCE(updated_at, 0),
COALESCE(children_updated_at, 0)
)
查看结果:db<>fiddle
输出:
GREATEST(dt1, dt2)
会起作用的。但如果任何日期为空,那么它将不起作用。
所以,更好地使用
GREATEST(COALESCE(dt1, 0), COALESCE(dt2, 0))