如何使用Prisma ORM基于GREATEST()函数实现记录排序?
如何用Prisma ORM基于GREATEST()函数实现自定义排序?
我有一个包含updated_at和children_updated_at两列的数据库表,希望通过SQL函数GREATEST(updated_at, children_updated_at)将最新修改的记录排在前面,并且需要用Prisma ORM来实现这个需求。
我期望生成的SQL查询语句如下:
select * from Account ORDER BY GREATEST(updated_at, children_updated_at);
这里的排序逻辑是取updated_at和children_updated_at中的最大值作为排序依据,请注意这和先按updated_at排序、再按children_updated_at排序的逻辑完全不同,后者在Prisma里很容易实现。
输入表示例
| name | updated_at | children_updated_at |
|---|---|---|
| User 1 | 2024-05-07 10:00:00.000 | 2024-05-07 13:00:00.000 |
| User 2 | 2024-05-07 11:00:00.000 | 2024-05-07 09:00:00.000 |
| User 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来实现?
内容的提问来源于stack exchange,提问作者Hendrik Jan
相关产品推荐
相关产品推荐

