Je suis un peu nouveaubie dans SQL et je dois créer une demande de mise à jour de plusieurs lignes dans le tableau en fonction de plusieurs conditions.
à partir de cet exemple: P>
SELECT * FROM User a1 WHERE a1.organisationid = 'MULT' AND ( SELECT COUNT(*) FROM User a2 WHERE a2.principaluserid = a1.id ) = 1;
3 Réponses :
Si je comprends correctement, une mise à jour code> doit faire le truc:
Bonjour, Ty pour votre aide. Mais semble que la demande ait une faute de frappe ou autre chose. J'ai une entrée de clause manquante pour table "up" 'de "Up.Email".
Vous pouvez utiliser une mise à jour basée sur la jointure
UPDATE user u1
SET u1.email = u2.email
FROM user u2
INNER JOIN
(
select principaluserid , count(*)
from user
group by principaluserid
having count(*) =1
) t2 ON t2.principaluserid = u2.principaluserid
AND u2.organisationid = 'MULT'
AND u1.id = u2.principaluserid
Bonjour et merci. Mais je dois mettre à jour uniquement les entrées dans lesquelles la longueur de correspondance principale = 1.
@Mrpotatoe Réponse mise à jour .. J'espère que vous recherchez
Je vais essayer d'essayer;)
Il semble qu'il y ait une faute de frappe sur le contact () => compte ( i>). Mais avoir des problèmes sur le "U2.PRINCIPALUSERID" qui n'existe pas.
Basé sur les conseils @TheMimaler, j'ai fait cette requête qui semble répondre à mes besoins:
N'utilisez pas
compte () code> deux fois. Vous pouvez faire:Sélectionnez * à partir de l'utilisateur A1 où a1.organiséidid = 'MULT' et (SELECT COUNT (*) à partir de l'utilisateur A2 où A2.PRINCIPAALUSERID = A1.IDE) = 1 code>@TheImpaler: En effet, TY. Travailler mieux maintenant. Cela a résolu ma demande sur la querelle des entrées correspondantes.