搜尋

首頁  >  問答  >  主體

如何將這些 Prisma 查詢簡化為單一查詢?

<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粉423694341P粉423694341448 天前442

全部回覆(1)我來回復

  • P粉741223880

    P粉7412238802023-09-04 00:51:06

    如果您只想更新給定 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 查詢。

    回覆
    0
  • 取消回覆