Sql 如何基于表与另一个表之间的内部联接字段更新表?

Sql 如何基于表与另一个表之间的内部联接字段更新表?,sql,postgresql,Sql,Postgresql,我有两个表(calendar和friend),它们具有相同的id字段。在本例中是一个dateid。在日历表中,id与实际日期相关,如“02-02-2019”。Friends表中有我遇到某个朋友的次数dateid和他的id。我想更新我们在某一天遇到的次数,但我似乎无法仅更新他,具体来说,一天我更新所有日期的所有朋友。到目前为止,我尝试的查询是详情如下: Update Friends Set timesmet=timesmet+1 From Friends as t1 inner join cale

我有两个表(calendar和friend),它们具有相同的id字段。在本例中是一个dateid。在日历表中,id与实际日期相关,如“02-02-2019”。Friends表中有我遇到某个朋友的次数dateid和他的id。我想更新我们在某一天遇到的次数,但我似乎无法仅更新他,具体来说,一天我更新所有日期的所有朋友。到目前为止,我尝试的查询是详情如下:

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是“2019年2月2日”的日期。我似乎更新了所有的朋友和所有的日期。有人能提出正确的方法吗?或者我必须通过调用日历中的select first来存储要更新的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没有这种语法,但我在这个平台上找到的几篇文章都在线建议使用这些语法。在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;

您需要确定要从哪个表中设置值的时间戳。所以设置timestamp=timestamp(第二个表来自哪个表)?