Postgresql 修复“或”附近的语法错误;“内部”;在使用更新时?
当我尝试使用内部文件进行更新时,出现以下错误:Postgresql 修复“或”附近的语法错误;“内部”;在使用更新时?,postgresql,sql-update,syntax-error,inner-join,Postgresql,Sql Update,Syntax Error,Inner Join,当我尝试使用内部文件进行更新时,出现以下错误: ERROR: syntax error at or near "INNER" LINE 1: UPDATE sale_order AS so SET state='progress' INNER JOIN sale... ^ 语法是: UPDATE sale_order AS so SET so.state='progress' INN
ERROR: syntax error at or near "INNER"
LINE 1: UPDATE sale_order AS so SET state='progress' INNER JOIN sale...
^
语法是:
UPDATE sale_order AS so
SET so.state='progress'
INNER JOIN sale_order_invoice_rel AS soi ON so.id= soi.order_id
INNER JOIN account_invoice AS ai ON soi.invoice_id=ai.id
WHERE so.state='done' AND ai.state !='paid';
该表的架构为:
销售订单:id |状态
sale\u order\u invoice\u rel:id | order\u id | invoice\u id
account\u invoice:id | state
- 更新目标表
- 设置
- 从另一张桌子
- [可选加入…在…上]
- 在哪里
很抱歉,这没有用我的问题是关于加入的,文档没有帮助,而是谢谢你的帮助为什么文档没有帮助?它说你可以在哪里写你写的东西?谢谢你的帮助,但这也不起作用:更新sale\u order AS so SET so.state='progress'来自sale\u order\u invoice\u rel AS soi ON so.id=soi.order\u id加入帐户\u invoice AS ai ON soi.invoice\u id=ai.id Where so.state='done'和ai.state'paid';错误:“ON”处或附近出现语法错误第3行:从销售订单发票销售订单销售订单销售订单销售订单销售订单销售订单销售订单销售订单销售订单销售订单销售订单销售订单销售订单销售订单销售订单销售订单销售订单销售订单销售订单销售订单销售订单销售订单销售订单销售订单销售订单销售订单销售订单销售订单销售订单销售订单销售订单销售订单销售订单销售订单销售订单销售订单销售订单销售订单销售订单销售订单销售订单销售订单销售订单销售订单销售订单销售订单销售订单销售订单销售订单销售订单销售订单销售订单销售订单销售订单销售订单销售订单销售订单销售订单销售订单销售订单销售订单销售订单销售订单销售订单销售订单销售订单销售订单销售订单销售订单销售订单销售订单销售订单销售订单销售订单销售订单销售订单销售订单销售订单销售订单销售在soi.invoice_id=ai.id上,账户_发票作为ai,其中so.state='done'和ai.state'paid';错误:第3行“ON”处或附近出现语法错误:从销售\订单\发票\发布为so.id=soi.order\ idOops上的soi,我在将您的
连接
从转换为时出错。
UPDATE sale_order AS so
SET state = 'progress'
FROM sale_order_invoice_rel AS soi ON so.id = soi.order_id -- <<-- this line
JOIN account_invoice AS ai ON soi.invoice_id = ai.id
WHERE so.state = 'done' AND ai.state <> 'paid' -- <<-- this line
;
UPDATE sale_order AS so
SET state = 'progress'
FROM sale_order_invoice_rel AS soi
JOIN account_invoice AS ai ON soi.invoice_id = ai.id
WHERE so.id = soi.order_id -- <<-- this line
AND so.state = 'done' AND ai.state <> 'paid'
;