I have a Wordpress table in which I want to take the user_email from Table2 and import it to contact_email on Table1 one based off of the user_login. user_login and user_id equal the same value. Nothing I have tried has worked. Any thoughts?


  user_id|contact_email |contact_name
 123     |test@test.com |deft
 124     |test3@test.com|deft3

Table2 (User table)

 user_login|user_email     |display_name
 123       |test@test.com  |deft
 124       |test3@test.com |deft3

I have tried:

        UPDATE Table1
        SET contact_email = (SELECT Table2.user_email
                 FROM Table2
                 WHERE Table2.user_login = user_id )
        WHERE EXISTS (SELECT Table2.user_email
                 FROM Table2
                 WHERE Table2.user_login = user_id );
  • Your query seems correct. What problem did you face? – ypercubeᵀᴹ Mar 30 '18 at 23:46

You can use next syntax:

update tbl1
join   tbl2
on     tbl1.user_id = tbl2.user_login
set    tbl1.contact_email = tbl2.user_email;
select * from tbl1;
user_id | contact_email  | contact_name
------: | :------------- | :-----------
    123 | test@test.com  | deft        
    124 | test3@test.com | deft3       

dbfiddle here

  • FYI - OP has reposted under a registered account here; using this UPDATE statement evidently generated an error. – RDFozz Mar 30 '18 at 19:40
  • @RDFozz I've seen. Why evidently? – McNets Mar 30 '18 at 19:41
  • I'm assuming he had issues editing this post - this user is unregistered, the new one is registered. I suggested merging accounts. – RDFozz Mar 30 '18 at 19:44

This should do it. Update your table inner join the second table based on ids. Then we set the email from one table to the other where the ids are the same. Hope it helps.

INNER JOIN tbl2 ON tbl2.user_login = tbl1.user_id
SET tbl1.contact_email = tbl2.user_email;  

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.