【问题标题】:Update one field from another table从另一个表更新一个字段
【发布时间】:2014-03-06 14:52:10
【问题描述】:

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

【问题讨论】:

    标签: mysql updates


    【解决方案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 = ''
    

    【讨论】:

    • 如果可行的话,我的朋友可能想接受答案
    【解决方案2】:

    两个表:

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

    【讨论】:

      猜你喜欢
      • 2015-10-03
      • 2011-02-15
      • 2018-09-14
      • 1970-01-01
      • 2015-04-29
      • 1970-01-01
      • 2013-02-15
      • 2016-04-26
      • 1970-01-01
      相关资源
      最近更新 更多