2016-09-28 5 views
0

최근에 보았던 (지금은 찾을 수 없다)이 문법은 ... LIKE CONCAT 'COL1,'% ')table1.column1이 concat ('%', table2.column2, '%')와 같은 것 같은 곳에서 mysql update table set column3

그것은 선택을 위해 노력하고 있지만, 업데이트, 그것은 0 행 에 영향을 미치는이 내 쿼리입니다 : 여기

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

는 COL1의 샘플입니다 "455 N 체로키 St : Muskogee, OK 74403 " 따옴표없이 답변을 이끌어 내기에 충분한 데이터를 주셨으면 좋겠어요. COL1이 = 인 경우

답변

1

당신은 거꾸로 가지고 있습니다. 도시를 넣고 패턴에 집어 넣기를 원합니다.

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

그러나 이것은 항상 올바르게 작동하지 않을 수 있습니다. 동일한 도시 + 우편 번호에 두 개의 공급 업체가있는 경우 하위 쿼리는 2 개의 전자 메일을 반환하지만 하위 쿼리를 값으로 사용하면 단 하나의 행만 반환해야합니다. 이 경우 서브 시스템에 LIMIT 1을 추가하면 오류를 예방할 수 있습니다. 그러나 예측할 수 없게 벤더 중 하나를 선택하게 될 것입니다. 아마도 테이블과 일치시킬 수있는보다 안정적인 방법을 제시해야합니다.

+0

은 73 개 공급 업체의 사례와 동일한 도시, 우편 번호 조합으로는 아무 문제가 없습니다. 1 번 답변을 수락했습니다 - 감사합니다! – phpmydev

+0

요즘에는 같은 도시에서 두 번째 공급 업체를 얻을 수 있습니다. – Barmar

0

는 "455 N 체로키 세인트 : 머스 코지, 확인 74403"

내가 location.city는 생각 = 머스 코지와 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,'%') 
)