首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >MySQL -比较2个表并更新第2个表

MySQL -比较2个表并更新第2个表
EN

Stack Overflow用户
提问于 2022-09-20 08:20:12
回答 1查看 37关注 0票数 1

我有两个表,我从CSV文件,公司(8000条记录)和联系人(11000条记录)导入。联系人的公司名称与公司表中的名称相匹配。插入记录后,需要将companyID添加到contacts表中。

代码语言:javascript
运行
复制
a_test_company
+---------------+---------------+
| companyID     | companyName   | 
+---------------+---------------+
| 1             | companyA      | 
| 2             | companyB      | 
| 3             | companyC      | 
| 4             | companyD      |  
+---------------+---------------+

a_test_contact
+---------------+---------------+---------------+---------------+
| contactID     | contactName   | companyName   | companyID     |
+---------------+---------------+---------------+---------------+
| 1             | contactA      | companyA      |  NULL         |
| 2             | contactB      | companyA      |  NULL         |
| 3             | contactC      | companyB      |  NULL         |
| 4             | contactD      | companyC      |  NULL         |
| 5             | contactE      | companyC      |  NULL         |
+---------------+---------------+---------------+---------------+


Expected Result:
a_test_contact
+---------------+---------------+---------------+---------------+
| contactID     | contactName   | companyName   | companyID     |
+---------------+---------------+---------------+---------------+
| 1             | contactA      | companyA      | 1             |
| 2             | contactB      | companyA      | 1             |
| 3             | contactC      | companyB      | 2             |
| 4             | contactD      | companyC      | 3             |
| 5             | contactE      | companyC      | 3             |
+---------------+---------------+---------------+---------------+

我可以在PHP中使用SELECT和UPDATE循环来实现这一点,但是我也想知道如何在PHPmyAdmin中这样做。我尝试使用本文中的代码示例:SQL从第一个表中选择行并更新为第二个表替换我的名字,但我从MySQL获得了一个错误:

代码语言:javascript
运行
复制
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'FROM a_test_company
JOIN a_test_company
ON a_test_contact.companyName = a_test' at line 3

邮编样本:(他使用国家和城市)

代码语言:javascript
运行
复制
UPDATE ci
SET ci.CountryId = co.CountryId
FROM tblCity ci
JOIN tblCountry co
ON ci.ISO2 = co.CountryISO2
AND ci.ISO3 = co.CountryISO3
WHERE ci.CountryId IS NULL

我的第一次尝试:(我用国家代替公司,用城市代替联系)

代码语言:javascript
运行
复制
UPDATE ci
SET ci.companyID = co.companyID
FROM a_test_contact ci
JOIN a_test_company co
ON ci.companyName = co.companyName
WHERE ci.companyID IS NULL

我的第二次尝试,也犯了同样的错误:(我不懂词和合作,虽然我假设它是城市和国家的名字)

代码语言:javascript
运行
复制
UPDATE a_test_contact
SET a_test_contact.companyID = a_test_company.companyID
FROM a_test_contact
JOIN a_test_company
ON a_test_contact.companyName = a_test_company.companyName
WHERE a_test_contact.companyID IS NULL
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-09-20 08:34:56

需要使用join子句进行简单的更新:

代码语言:javascript
运行
复制
update a_test_contact cont 
inner join a_test_company com on cont.companyName=com.companyName
set cont.companyID=com.companyID;

https://dbfiddle.uk/K8ouXdF6

了解关于MySQL更新连接的更多信息

我不明白词和同事的意思,虽然我认为这是城市和乡村的名字

它们被称为别名,它提高了查询的可读性。在我的示例中,我将cont用于a_test_contact表,com用于a_test_company

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73783598

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档