我需要在事先不知道id的情况下按日期udpate用户的最后一个帖子,我可以通过两个查询来完成,如下所示:
ctx.prisma.post.update({
where: {
id: await ctx.prisma.post
.findFirst({
where: { userId: "c2e4c855-768c-48ab-b9c1-155ce1090cd6" },
orderBy: { date: "desc" },
})
.then(post => post.id),
},
data: {
updated: true
},
})
我一直在尝试让它作为一个查询工作,但我没有成功,这是我作为 SQL 子句得到的最好结果:
UPDATE Post
SET updated = true
WHERE id IN (
SELECT * FROM (
SELECT id
FROM Post
WHERE user_id = "c2e4c855-768c-48ab-b9c1-155ce1090cd6"
AND date = (SELECT MAX(date) from Post)) as x);
尽管这是一个子句,但它也会两次访问数据库。如果有更好的方法在 SQL 中执行此操作,我会对学习感兴趣,但我不想使用 Prisma 发送原始查询并失去所有类型安全性。
我正在寻找的内容是否可能,或者我应该将其保留在两个查询中吗?
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号
如果您只想更新给定
user_id的最新Post:我不知道你会如何用 prisma 编写这个,但这是 SQL 查询。