如何将这些 Prisma 查询简化为单个查询?
P粉423694341
P粉423694341 2023-09-03 08:34:00
0
1
415
<p>我需要在事先不知道<code>id</code>的情况下按日期<code>udpate</code><code>用户</code>的最后一个<code>帖子</code>,我可以通过两个查询来完成,如下所示:</p> <pre class="brush:php;toolbar:false;">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 }, })</pre> <p>我一直在尝试让它作为一个查询工作,但我没有成功,这是我作为 SQL 子句得到的最好结果:</p> <pre class="lang-sql prettyprint-override"><code>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); </code></pre> <p>尽管这是一个子句,但它也会两次访问数据库。如果有更好的方法在 SQL 中执行此操作,我会对学习感兴趣,但我不想使用 Prisma 发送<code>原始</code>查询并失去所有类型安全性。</p> <p>我正在寻找的内容是否可能,或者我应该将其保留在两个查询中吗?</p>
P粉423694341
P粉423694341

全部回复(1)
P粉741223880

如果您只想更新给定 user_id 的最新 Post

UPDATE Post
SET updated = true
WHERE user_id = 'c2e4c855-768c-48ab-b9c1-155ce1090cd6'
ORDER BY date DESC, id DESC
LIMIT 1;

我不知道你会如何用 prisma 编写这个,但这是 SQL 查询。

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责声明 Sitemap
PHP中文网:公益在线PHP培训,帮助PHP学习者快速成长!