我对一种情况有疑问:

我在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手套。

最佳答案

从您的样本数据中,我认为您需要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, '%')

09-26 23:30
查看更多