Heim  >  Fragen und Antworten  >  Hauptteil

Wie kann ich diese Prisma-Abfragen auf eine einzige Abfrage reduzieren?

<p>Ich muss den letzten <code> des Benutzers </code> nach Datum abrufen, ohne vorher die <code>id</code> zu kennen </code>, ich kann es mit zwei Abfragen wie dieser machen: </p> <pre class="brush:php;toolbar:false;">ctx.prisma.post.update({ Wo: { ID: Warten auf ctx.prisma.post .findFirst({ wobei: { Benutzer-ID: "c2e4c855-768c-48ab-b9c1-155ce1090cd6 }, orderBy: { Datum: "desc" }) .then(post => post.id), }, Daten: { aktualisiert: wahr }, })</pre> <p>Ich habe versucht, es als Abfrage zum Laufen zu bringen, hatte aber keinen Erfolg. Dies ist die beste SQL-Klausel, die ich je bekommen habe: </p> <pre class="lang-sql Prettyprint-override"><code>UPDATE-Beitrag SET aktualisiert = wahr WO id IN ( WÄHLEN AUS ( SELECT-ID VON Beitrag WHERE user_id = "c2e4c855-768c-48ab-b9c1-155ce1090cd6" AND date = (SELECT MAX(date) from Post)) as x); </code></pre> <p>Obwohl es sich hierbei um eine Klausel handelt, greift sie auch zweimal auf die Datenbank zu. Wenn es eine bessere Möglichkeit gibt, dies in SQL zu tun, wäre ich daran interessiert, es zu lernen, aber ich möchte Prisma nicht verwenden, um <code>raw</code>-Abfragen zu senden und jegliche Typsicherheit zu verlieren. </p> <p>Ist das, was ich suche, möglich oder sollte ich es in zwei Abfragen behalten? </p>
P粉423694341P粉423694341413 Tage vor411

Antworte allen(1)Ich werde antworten

  • 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 查询。

    Antwort
    0
  • StornierenAntwort