如何在Postgresql中连接两个表以更新一个表

如何在Postgresql中连接两个表以更新一个表,sql,postgresql,Sql,Postgresql,我有两个表user\u table和subscription\u table | email(varchar) | type(varchar)| is_subscribed(boolean) ------------------------------------------------------------------ | abc@gmail.com | news | true | abc@gma

我有两个表user\u table和subscription\u table

    | email(varchar)            | type(varchar)| is_subscribed(boolean)
    ------------------------------------------------------------------
    |  abc@gmail.com            |   news       | true
    |  abc@gmail.com            |   video      | false
    |  def@gmail.com            |   news       | true
    |  def@gmail.com            |   video      | true
用户表

| user_id(int)| email(varchar) | phone(int)|
------------------------------------------------
|    1       | abc@gmail.com   |   9910256256 |
|    2       | def@gmail.com   |   8856956325 |
|    3       | ghi@gmail.com   |   8745692455 |
|    4       | jkl@gmail.com   |   7852369526 |
订阅表

    | email(varchar)            | type(varchar)| is_subscribed(boolean)
    ------------------------------------------------------------------
    |  abc@gmail.com            |   news       | true
    |  abc@gmail.com            |   video      | false
    |  def@gmail.com            |   news       | true
    |  def@gmail.com            |   video      | true
我有
user\u id
,想更新
is\u订阅
。更新
的最佳方法是订阅

我曾尝试使用多个查询来完成此操作,但我认为这并不好。

这是您想要的吗

update subscription_table s
    set is_subscription = ?
    from user_table u
    where u.email = s.email and u.user_id= ?;

注意:如果您有一个
用户id
,则应该将其用于外键关系。我不明白为什么电子邮件会被用于此目的。

更新的逻辑是什么?订阅表中的电子邮件也在用户表中。我也想通过在现有电子邮件中添加一些文本来更新电子邮件,如[abc@gmail.com---->abc-cancel@gmail.com]. 你能告诉我在这个查询@Gordon Linoff中我该怎么做吗