我如何更新层次结构联接表

时间:2019-08-23 13:47:19

标签: mysql

我遇到一种情况:

我在mysql中有2个表:

  • update_streets
  • verify_streets

我想通过加入验证update_streets表来更新streets表上的街道,并检查两个表中的countycountry字段是否相同

UPDATE
update_street p
INNER JOIN
verify_streets m
ON
p.county = m.verify_streets  AND p.country = m.country AND p.street = 
m.street %%
SET
p.street = m.street
  

样本数据

verify_street
id | street        | county | country 
---|---------------|--------|--------
1  | elize glove   | varna  | bulgaria

update_street
id | street | county | country
---|--------|--------|---------
 1 | elize  | varna  | bulgaria

我需要用update_street中的名字street来更新verify_street表,以便:update_street中的elize成为elize手套。

1 个答案:

答案 0 :(得分:0)

根据您的样本数据,我认为您需要LIKE运算符:

UPDATE update_street p INNER JOIN verify_streets m
ON p.country = m.country  AND p.county = m.county AND m.street like concat('%', p.street, '%')
SET p.street = m.street

如果您希望开始verify_streets中的街道并且不包括update_street中的街道,则将ON子句的最后一个条件更改为:

m.street like concat(p.street, '%')