【问题标题】:update join with where更新加入 where
【发布时间】:2021-10-14 00:30:55
【问题描述】:

我需要更新有关债务人和义务的贷款的某个警报,但我无法弄清楚我在加入时做错了什么。这似乎更新了表中的所有警报,而不是我想要的特定警报。我们正在使用 postgresql 数据库

update alert set deadline = '08/09/2021'
  from alert as a
 where loan.obligor = 'ALERT-TEST-SIMPLE-DATA-ISSUE'
  join loan on loan.id = a.loan_id
 where obligor = 'ALERT-TEST-SIMPLE-DATA-ISSUE' );

【问题讨论】:

  • 您的代码在语法上不正确,因为未定义 loan。您还应该清楚您正在使用的数据库。

标签: sql postgresql join sql-update


【解决方案1】:

Workbench 通常指 MySQL。如果是这样,那么正确的语法是:

update alert a join
       loan l
       on l.id = a.loan_id 
    set a.deadline = '2021-08-09'   -- or whatever the date is
    where l.obligor = 'ALERT-TEST-SIMPLE-DATA-ISSUE' ;

在 Postgres 中,这看起来像:

update alert a
    set a.deadline = '2021-08-09'   -- or whatever the date is
    from loan l
    where l.id = a.loan_id  and
          l.obligor = 'ALERT-TEST-SIMPLE-DATA-ISSUE' ;

【讨论】:

  • 抱歉,我们实际上使用的是 postgresql,我不太熟悉。出现错误:在“加入”位置或附近出现语法错误位置:16 更新警报加入 ^ 在你的
  • 错误:关系“警报”的列“a”不存在位置:24 设置 a.deadline = '08/09/2021' 现在得到这个
  • s/set a.deadline =/set deadline =/g
【解决方案2】:
update a
set deadline = '08/09/2021' 
from alert as a 
join loan as ll on ll.loan.id = a.loan_id 
where ll.obligor = 'ALERT-TEST-SIMPLE-DATA-ISSUE' 

我猜你可以试试上面的查询

【讨论】:

  • 这看起来像 microsoft/sybase-syntax。
  • 绝对是
猜你喜欢
  • 2021-09-17
  • 1970-01-01
  • 2018-05-16
  • 2012-12-29
  • 2017-11-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多