如果数组中的相关表值是在表上设置值(PostgreSQL)

时间:2018-11-25 22:17:38

标签: sql postgresql join sql-update

我有2个表,usersprofiles。如果profiles.verified在列表true中,我想将users.emails设置为('email1','email2',...)

updating table rows in postgres using subquery等其他SO线程的启发,我一直在尝试做类似的事情,

UPDATE 
  profiles p1  
SET 
  verified = true
FROM 
  profiles p2
  INNER JOIN users u1 on u1.id = p2.user_id
WHERE 
  u1.email in ('email1','email2',...)

但是它只是将profiles.verified中的所有记录的true更新为profiles

如果profile记录与指定列表中的电子邮件中的users记录相关,该如何更新?

1 个答案:

答案 0 :(得分:1)

在Postgres中,您不会提及该表被两次更新:

UPDATE profiles p1  
    SET verified = true
FROM users u1 
WHERE u1.id = p1.user_id AND
      u1.email in ('email1', 'email2', ...)