如何基于另一个表具有的内部联接字段更新表?

时间:2019-02-21 19:50:18

标签: sql postgresql

我有两个表(日历和朋友)具有相同的id字段。在这种情况下为dateid。在日历表中,ID与实际日期相关,例如'02 -02-2019'.Friends表中有几次我遇到某个朋友的dateid及其ID。我想更新一天中遇到的时间,但似乎无法只更新他,有一天我要更新所有日期的所有朋友。到目前为止,我尝试过的查询如下:< / p>

Update Friends Set timesmet=timesmet+1
From Friends as t1 inner join calendar as t2
on t1.dateid=t2.dateid
where t2.dateofday='02-02-2019' and t1.friendid=1

其中dateofday是“ 02-02-2019”的日期。我似乎更新了所有朋友和所有日期。有人可以建议一种正确执行此操作的方法吗?还是我必须存储要通过从日历中首先调用一个select来更新的dateid?

我也尝试过:

UPDATE Friends
INNER JOIN calendar
ON Friends.dateid = calendar.dateid
SET Friends.timesmet = timesmet+1
WHERE Friends.friendid=1 and calendar.dateofday='02-02-2019'.

我使用的是postgres,这最后一个告诉我,内部联接中存在语法错误,这可能是因为update doe并没有这种语法,但是我在此平台上的几篇文章中都在线建议了所有这些信息

1 个答案:

答案 0 :(得分:1)

在Postgres中,语法为:

update Friends f
    Set timesmet = timesmet + 1
from calendar c
where f.dateid = c.dateid and
      c.dateofday = '02-02-2019' and
      f.friendid = 1;