sql - Postgresql 使用连接更新表

标签 sql postgresql join

我需要使用来自其他表的信息更新表。 这是我的 sql 查询:

UPDATE service a 
JOIN agency b USING (feed_id) 
SET end_date = (SELECT MIN(start_date)-1 
                FROM service c 
                JOIN agency d USING (feed_id) 
                WHERE b.feed_id = a.feed_+1 
                      AND b.agency_id = d.agency_id)

我在条件中需要代理 ID,所以唯一的方法是将两个表与代理表连接起来。

Postgres 返回:

ERROR:  syntax error at or near "JOIN"
LINE 1: UPDATE service a JOIN agency b USING (feed_id) SET end_date ...

有什么建议吗?

最佳答案

试试这个:)

UPDATE service
SET end_date = (SELECT MIN(start_date)-1 
                FROM service c 
                JOIN agency d USING (feed_id) 
                WHERE b.feed_id = a.feed_+1 
                      AND b.agency_id = d.agency_id)
FROM service a
JOIN agency b USING (feed_id) 

关于sql - Postgresql 使用连接更新表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40287034/

相关文章:

sql - 在 SQL 中,只有当没有 child 满足条件时才带主人

java - ResultSet.updateTime() 导致错误的值

SQL ON DELETE CASCADE 与删除业务逻辑

java - Spark-Java : Display join RDD

mysql - 如何在 MySql 中连接两个表时创建 View

python - 列出连接期间丢失的内容的表(SQL 或 Pandas)?

mysql - 如何在sql查询中识别客户和供应商

MySQL JOIN 是否为空

postgresql - 如何在 PostgreSQL 中截断日期?

r - 符合IEEE754的不同系统中 float 是否相同?