我正在使用Mysql,尝试从更新查询中获得结果时遇到了困难。我有两张桌子。第一个表加载data_temp和第二个表部分company_category
第一个表加载数据_ amp
|id_external|company_name |company_category_id|
-------------------------------------------------------------
| 1|iqballord |UD |
| 2|A Plus Lawn Care |PT |
| 3|A. L. Price |PMA |
| 4|A.J. August Fashion Wear |BUMN |
| 5|A+ Electronics |WARUNG |
| 6|A+ Investments |PT |
第二表Company_类别
|company_category_id|company_category_description|
--------------------|-----------------------------
| 3|PT |
| 5|UD |
| 6|PMA |
| 7|BUMN |
| 23|Koperasi |
我使用此查询作为获取结果
UPDATE loaddata_temp,company_category
SET loaddata_temp.company_category_id=
CASE
WHEN loaddata_temp.company_category_id = company_category.company_category_description
THEN company_category.company_category_id
ELSE 'error' END
我从上面查询中得到了什么
|id_external|company_name |company_category_id|
-------------------------------------------------------------
| 1|iqballord |5 |
| 2|A Plus Lawn Care |3 |
| 3|A. L. Price |6 |
| 4|A.J. August Fashion Wear |7 |
| 5|A+ Electronics |error |
| 6|A+ Investments |3 |
但是我得到的
|id_external|company_name |company_category_id|
-------------------------------------------------------------
| 1|iqballord |error |
| 2|A Plus Lawn Care |error |
| 3|A. L. Price |error |
| 4|A.J. August Fashion Wear |error |
| 5|A+ Electronics |error |
| 6|A+ Investments |3 |
我将使用以下查询:
UPDATE loaddata_temp lt
LEFT JOIN company_category cc
ON cc.company_category_description = lt.company_category_id
SET lt.company_category_id = COALESCE(cc.company_category_id, 'error');
使用LEFT JOIN查找要更新的匹配行。如果在company_category表中找不到行,则更新为"error"。
UPDATE loaddata_temp l LEFT JOIN company_category c ON c.company_category_description = l.company_category_id
SET loaddata_temp.company_category_id= If(c.company_category_id IS NULL, 'error' ,c.company_category_id)
您还可以在查询中使用IF语句,如果找到company_category_id,则它将更新相同的语句,否则返回"error"。