4
votes

Comment puis-je mettre à jour une table à l'aide de MySQL tout en utilisant la recherche dans une autre table

Le panneau de table et les panélistes ont 1 colonne en commun. appelé user_id où c'est un entier par exemple

panneau de table:

UPDATE panelists SET name = 'dummy' WHERE u_email LIKE '%dummy.com';

panélistes de table:

---------------------------------------------------------
user_id         email_active           
---------------------------------------------------------
  5              1
  6              1
  1              1

ce dont j'ai besoin à faire est de changer le nom où l'email inclut "@ dummy.com" en factice et pour changer l'email_active en tous les e-mails factices du panneau en 2 au lieu de 1.

Je ne sais pas comment faire cela J'ai réussi à changer le nom dans panéliste en recherchant les e-mails factices utilisant

---------------------------------------------------------
user_id         email                   name
---------------------------------------------------------
  5              hello@dummy.com        john
  6              man@city.com           Ronn
  1              fun@dummy.com          Sat

mais je ne sais pas comment mettre à jour l'email_active dans le tableau du panneau.


0 commentaires

3 Réponses :


1
votes
UPDATE panelists
JOIN panel
ON panelists.user_id = panel.user_id
SET panelists.email_active = '2'
WHERE panel.email LIKE '%dummy.com';

0 commentaires

2
votes

Vous pouvez changer 2 tables à partir d'une requête comme ceci:

-- step 1
UPDATE panel SET email = "dummy" WHERE email like "%@dummy.com";

-- step 2
UPDATE panelists t1
JOIN panel t2 on t1.user_id = t2.user_id AND t2.email = "dummy"
SET email_active = 2;

Mais dans le cas où vos tables sont grandes (contient beaucoup de lignes), je vous conseille plutôt d'exécuter 2 requêtes distinctes, comme ceci:

UPDATE panel t1, panelists t2
SET t1.email = "dummy", t2.email_active = 2
WHERE t1.user_id = t2.user_id AND t1.email like "%@dummy.com";


0 commentaires

3
votes

Vous pouvez modifier 2 tables à partir d'une requête comme ceci:

UPDATE panelists as a
JOIN panel as s
ON s.uid = a.uid
SET a.pstatus = '2', s.u_name = 'dummy'
WHERE s.u_email LIKE '%dummy.com';


0 commentaires