从另一个表更新一个字段

时间:2014-02-09 09:37:21

标签: mysql updates

我需要从另一个表的字段更新一个表的字段。我遵循了完全相同的链接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 = ''

2 个答案:

答案 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的回答;但是,这个答案更适合这个问题(在我看来)。