如何將這些 Prisma 查詢簡化為單一查詢?
P粉423694341
2023-09-03 08:34:00
<p>我需要在事先不知道<code>id</code>的情況下按日期<code>udpate</code><code>用戶</code>的最後一個<code><code>用戶</code>的最後一個<code>帖子</code>,我可以透過兩個查詢來完成,如下所示:</p>
<pre class="brush:php;toolbar:false;">ctx.prisma.post.update({
where: {
id: await ctx.prisma.post
.findFirst({
其中: { 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>
如果您只想更新給定
user_id
的最新Post
:我不知道你會如何用 prisma 寫這個,但這是 SQL 查詢。