Comment puis-je réduire ces requêtes Prisma à une seule requête ?
P粉423694341
P粉423694341 2023-09-03 08:34:00
0
1
439
<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粉423694341
P粉423694341

répondre à tous(1)
P粉741223880

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.

Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal