我有两张桌子,usersprofiles。如果profiles.verified在列表true中,我想将users.emails设置为('email1','email2',...)
受其他类似于updating table rows in postgres using subquery的线索的启发,我一直在尝试做一些类似的事情,

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记录相关,我如何才能更新它们?

最佳答案

在Postgres中,您不会提到要更新两次的表:

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

关于sql - 如果数组中的相关表值是在表上设置值(PostgreSQL),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/53472559/

10-09 08:25