如何將這些 Prisma 查詢簡化為單一查詢?
P粉423694341
P粉423694341 2023-09-03 08:34:00
0
1
413
<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>
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學習者快速成長!