2016-09-28 3 views
0

Я видел недавно (не могу найти его сейчас): ... LIKE CONCAT ('% », col1, '%')mysql update table set column3 где table1.column1 like concat ('%', table2.column2, '%')

он работает 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 " без котировок

Надеюсь, я дал достаточно данных, чтобы получить ответ или два - спасибо!

ответ

1

У вас есть это в обратном порядке. Вы хотите поместить город и застегнуть молнию в узор.

update locations set email = (
    select col2 from vendoremail 
    where col1 LIKE CONCAT('%', locations.city, '%', locations.zip, '%') 
) 

Однако это может не всегда работать должным образом. Если у вас есть два продавца в одном городе + zip, подзапрос вернет 2 письма, но при использовании подзапроса в качестве значения он должен вернуть только 1 строку. Вы можете добавить LIMIT 1 в подзапрос, чтобы предотвратить ошибку, когда это произойдет. Но это будет непредсказуемым выбором одного из поставщиков - возможно, вам стоит придумать более надежный способ сопоставления таблиц.

+0

работал отлично для моего случая из 73 продавцов и ни с одним и тем же городом, zip-комбо. 1 up и принятый ответ - спасибо! – phpmydev

+0

На днях вы получите второго продавца в том же городе, и BOOM! – Barmar

0

Если col1 является = "455 N Cherokee St: Маскоги 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,'%') 
) 

 Смежные вопросы

  • Нет связанных вопросов^_^