Maison  >  Questions et réponses  >  le corps du texte

Comment puis-je réduire ces requêtes Prisma à une seule requête ?

<p>J'ai besoin d'obtenir le dernier <code> de l'utilisateur</code> par date <code>udpate</code><code> </code>, je peux le faire avec deux requêtes comme celle-ci : </p> <pre class="brush:php;toolbar:false;">ctx.prisma.post.update({ où: { identifiant : attendre ctx.prisma.post .findFirst({ où : { userId : "c2e4c855-768c-48ab-b9c1-155ce1090cd6" }, orderBy : { date : "desc" }, }) .then(post => post.id), }, données: { mis à jour : vrai }, })</pré> <p>J'ai essayé de le faire fonctionner comme une requête mais je n'ai pas réussi, c'est la meilleure que j'ai obtenue en tant que clause SQL : </p> <pre class="lang-sql Prettyprint-override"><code>UPDATE SET mis à jour = vrai OÙ identifiant DANS ( SÉLECTIONNER * DEPUIS ( ID SELECT DE Poste OÙ user_id = "c2e4c855-768c-48ab-b9c1-155ce1090cd6" ET date = (SELECT MAX(date) from Post)) as x); </code></pre> <p>Bien qu'il s'agisse d'une clause, elle accède également deux fois à la base de données. S'il existe une meilleure façon de le faire en SQL, je serais intéressé à l'apprendre, mais je ne veux pas utiliser Prisma pour envoyer des requêtes <code>raw</code> </p> <p>Ce que je recherche est-il possible ou dois-je le conserver en deux requêtes ? </p>
P粉423694341P粉423694341413 Il y a quelques jours417

répondre à tous(1)je répondrai

  • P粉741223880

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

    Si vous souhaitez uniquement mettre à jour un user_id 的最新 Post donné :

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

    Je ne sais pas comment vous écririez cela en prisma, mais il s'agit d'une requête SQL.

    répondre
    0
  • Annulerrépondre