这是我尝试编写的PSQL命令:
UPDATE accounts
SET account_type_id=subquery.id
FROM (SELECT id
FROM account_types
WHERE mongo_id = accounts.mongo_account_type_id) AS subquery
WHERE accounts.id = 1;
收到此错误消息:
错误:对表"帐户"的FROM子句条目的无效引用 第1行:... OM(SELECT id FROM account_types WHERE mongo_id = accounts.m ... ^提示:表" accounts"有一个条目,但不能引用它 从这部分查询。
数据结构的简短说明 - 从MongoDB迁移到PSQL,我已将所有记录移到PSQL中,维护旧的Mongo BSON以引用和重新拼接具有外键关系的记录 - 我的帐户表具有如下列:
mongo_id | 521289ae1e0345000200000f
mongo_merchant_id | 55e13f0afbab68982e000006
mongo_account_type_id | 521289c41e03450002000011
mongo_admin_id | 518b762e89651a0389000013
我的account_types表格包含:
mongo_id | 521289c41e03450002000011
mongo_merchant_id | 55e13f0afbab68982e000006
所以我尝试使用accounts.mongo_account_type_id == account_types.mongo_id作为参考,将ACCOUNTS表的account_type_id字段设置为ACCOUNT_TYPES表中id字段的INTEGER值。
最终,帐户应该有account_type_id = 1(在这种情况下 - 此特殊情况下记录为account_type的id为1)
在我的查询中,我对如何使用帐户表作为变量'进行子查询感到困惑。对于mongo_account_type_id。
答案 0 :(得分:2)
据我了解您的意图,查询应如下所示:
UPDATE accounts a
SET account_type_id = t.id
FROM account_types t
WHERE t.mongo_id = a.mongo_account_type_id
AND a.id = 1;