[英]MySQL - compare 2 tables and update the 2nd from the 1st
我有 2 個表從 CSV 文件、公司(8000 條記錄)和聯系人(11000 條記錄)導入。 聯系人的公司名稱與公司表中的名稱相匹配。 插入記錄后,我需要將 companyID 添加到聯系人表中。
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 |
+---------------+---------------+---------------+---------------+
我可以使用 SELECT 和 UPDATE 循環在 PHP 中執行此操作,但我也想知道如何在 PHPmyAdmin 中執行此操作。 我已經嘗試使用這篇文章中的代碼示例: SQL Select 行從第一個表和更新到第二個表通過替換我的名字,但我從 Z62A004B9594CA6BB73AZ41AFA471DC 得到一個錯誤:
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
來自帖子的示例代碼:(他使用了國家和城市)
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
我的第一次嘗試:(我用國家代替公司和城市代替聯系人)
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
我的第二次嘗試,同樣的錯誤:(我不理解 ci 和 co,雖然我假設它是城市和國家的名稱)
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
需要使用 join 子句進行簡單更新:
update a_test_contact cont
inner join a_test_company com on cont.companyName=com.companyName
set cont.companyID=com.companyID;
了解更多關於MySQL 更新加入
我不明白 ci 和 co,雖然我假設它是城市和國家的名稱
它們被稱為別名,可提高查詢的可讀性。 在我的示例中,我將cont
用於a_test_contact
表, com
用於a_test_company
表
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.