0
votes

SQL - Mise à jour des rangées dans le tableau en fonction de plusieurs conditions

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;


2 commentaires

N'utilisez pas compte () 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


@TheImpaler: En effet, TY. Travailler mieux maintenant. Cela a résolu ma demande sur la querelle des entrées correspondantes.


3 Réponses :


0
votes

Si je comprends correctement, une mise à jour doit faire le truc: xxx


1 commentaires

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".



0
votes

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 


4 commentaires

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 (). Mais avoir des problèmes sur le "U2.PRINCIPALUSERID" qui n'existe pas.



0
votes

Basé sur les conseils @TheMimaler, j'ai fait cette requête qui semble répondre à mes besoins: xxx


0 commentaires