我使用的是Mysql,而且我很难尝试从更新查询中获取结果。我有两张桌子。第一个表loaddata_temp和第二个表部分company_category
第一个表loaddata_temp
|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_category
|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 |
答案 0 :(得分: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表中未找到任何行,则更新为'错误'。
答案 1 :(得分:0)
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'。