我需要从另一个表的字段更新一个表的字段。我遵循了完全相同的链接Stackoverflow,但我收到了语法错误。
这是我的查询
UPDATE crm_leads
SET landlord_name = crm_owners.name,
last_name = crm_owners.last_name
FROM crm_owners
WHERE crm_owners.id =crm_leads.landlord_id
AND crm_leads.landlord_name = ''
AND crm_leads.last_name = ''
答案 0 :(得分:1)
尝试在UPDATE之后但在SET之前放置内部联接。如果我正确理解您的架构,这样的事情应该有效:
UPDATE crm_leads
INNER JOIN crm_owners
ON crm_owners.id = crm_leads.landlord_id
SET crm_leads.landlord_name = crm_owners.name,
crm_leads.last_name = crm_owners.last_name
WHERE crm_leads.landlord_name = ''
AND crm_leads.last_name = ''
答案 1 :(得分:0)
两张桌子:
genes
:基因名称列表(附加列显示已批准的基因名称,用于直接比较)。 我们会更新此表。 gene_synonyms
:已批准的基因名称及其同义词(别名)的参考/循环表。 我们将使用此表中的数据更新其他表格。 PSQL:
# SELECT * FROM genes ORDER BY id;
id name approved_name
-- ------- -------------
1 AIBP NAXE
2 ABG A1BG
3 CHP CHP1
4 CHP1 CHP1
5 SLCA1BP CHP1
6 NAXE NAXE
7 AIBP NAXE
8 APOA1BP NAXE
9 A1B A1BG
# SELECT * FROM gene_synonyms;
id approved_name synonym
-- ------------- -------
4 A1BG A1B
5 A1BG ABG
6 CHP1 CHP
7 CHP1 SLCA1BP
8 NAXE AIBP
9 NAXE APOA1BP
根据genes
表中的已批准名称和同义词更新gene_synonyms
表中的基因名称:
# UPDATE genes
SET name = b.name
FROM gene_synonyms as b
WHERE NOT genes.name = b.name
AND genes.name = b.synonym;
UPDATE 7
# SELECT * from genes order by id;
id name approved_name
-- ---- -------------
1 NAXE NAXE
2 A1BG A1BG
3 CHP1 CHP1
4 CHP1 CHP1
5 CHP1 CHP1
6 NAXE NAXE
7 NAXE NAXE
8 NAXE NAXE
9 A1BG A1BG
# SELECT * from gene_synonyms;
id approved_name synonym
-- ------------- -------
4 A1BG A1B
5 A1BG ABG
6 CHP1 CHP
7 CHP1 SLCA1BP
8 NAXE AIBP
9 NAXE APOA1BP
这是基于@ {scott-bailey在SO 2763817的回答;但是,这个答案更适合这个问题(在我看来)。