我最近看到了(现在无法找到)这种语法: ......喜欢CONCAT('%',col1,'%')
它适用于Selects但是对于更新,它会影响0行 这是我的疑问:
update locations set email = (
select col2 from vendoremail
where locations.city LIKE CONCAT('%',col1,'%')
AND locations.zip LIKE CONCAT('%',col1,'%')
)
这是col1的示例: " 455 N Cherokee St:Muskogee,OK 74403" 没有引号
我希望我已经提供了足够的数据来引出一两个答案 - 谢谢!
答案 0 :(得分:1)
你倒退了。你想把城市和拉链放入模式中。
update locations set email = (
select col2 from vendoremail
where col1 LIKE CONCAT('%', locations.city, '%', locations.zip, '%')
)
但是,这可能并不总是正常。如果您在同一个城市+ zip中有两个供应商,则子查询将返回2封电子邮件,但是当您使用子查询作为值时,它必须仅返回1行。您可以将LIMIT 1
添加到子查询中,以防止发生这种情况时出错。但它会不可预测地选择其中一个供应商 - 也许你应该想出一种更可靠的方法来匹配表格。
答案 1 :(得分:0)
如果col1 =“455 N Cherokee St:Muskogee,OK 74403”
我认为location.city = Muskogee和locations.zip = 74403
那么查询应该是
update locations
set email = (
select col2 from vendoremail
where col1 LIKE CONCAT('%',locations.city,'%')
AND col1 locations.zip LIKE CONCAT('%',locations.zip,'%')
)