PostgreSQL错误:列" i"关系"库存"不存在

时间:2016-12-19 23:24:07

标签: postgresql

我有一个数据库,我需要根据另一个表的注册表更新某些表上的数据。我可以得到帮助,因为我有点坚持它。

我将此选择查询作为参考:

select i.* 
from transaction as 't' 
inner join transaction_detail as 'td'
on t.id_transaction=td.id_transaction
inner join inventory as 'i'
on i.id_inventory=td.id_inventory
where t.registered_date>='2016-09-01';

我想要做的是根据表t中的日期从表i中更新一个字段,所以它会是这样的:

update inventory i
set i.status='cancel' 
from transaction_detail td
inner join transaction t
on t.id_transaction=td.id_transaction
where t.registered_date>='2016-09-01' 
and i.id_inventory=td.id_inventory;

我在postgres上做这个,有什么指针吗?我应该尝试使用函数吗?

编辑:如果它有帮助,列之间的关系是从事务到transaction_detail的一对多,以及从transaction_detail到库存的一对一。

1 个答案:

答案 0 :(得分:2)

请参阅https://www.postgresql.org/docs/9.3/static/sql-update.html

  

column_name table_name指定的表中列的名称。如果需要,可以使用子字段名称或数组下标限定列名称。不要在目标列的规范中包含表的名称 - 例如,UPDATE选项卡SET tab.col = 1无效。

因此您需要将set i.status='cancel'更改为set status='cancel'