2017-08-08 150 views
1

我试图从另一个表中更新一个表,查询将所有字段customers.entry_company_tax_id设置为“NULL”,这对我来说没有意义。MySql从另一个表更新一个表失败

这里是查询,有人可以告诉我我做错了什么吗?

UPDATE customers 
    SET customers.entry_company_tax_id = (
     SELECT prospects.account 
     FROM prospects 
     WHERE prospects.prospect = customers.entry_company_tax_id 
    ); 

回答

1

如果没有比赛,他们将被设置为NULL

我会用JOIN语法更新开始:

UPDATE customers c JOIN 
     prospects p 
     ON p.prospect = c.entry_company_tax_id 
    SET c.entry_company_tax_id = p.account; 

这样做的优势在于,它将只更新匹配的记录 - 所以没有新的NULL值(除非p.accountNULL)。

然后,您可以调查这两个表是否是正确的JOIN键。您是否使用entry_company_tax_id既用于JOIN也用于字段值?

+0

潜在客户数据库有一些信息,但不是全部。前景有以下领域“前景”和“账户”。公司有“entry_company_tax_id”,并且我想在prospects.prospect = company.entry_company_tax_id时更新company.entry_company_tax_id与prospects.accounts。上面的查询会如何工作? – Sandwick

+0

@Sandwick。 。 。表格之间的链接需要正确。如果您现在正在获取所有“NULL”,则可能是使用了错误的列。 –

+0

您的查询工作并解决了我的问题! – Sandwick