2016-09-28 3 views
0

最近見た(今は見つかりません)この構文は ... LIKE CONCAT( '% 」、COL1、 '%')mysql update table set column3 where table1.column1 like concat( '%'、table2.column2、 '%')

それは選択のためではなく、更新のために働いて、それが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「 引用符なし

私は答えを得るために十分なデータを与えてくれることを願っています。

答えて

1

あなたはそれを後方に持っています。あなたは都市に入れてパターンに入れたいと思っています。

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

しかし、これは必ずしも正しく動作しないことがあります。同じ都市+ジップに2つのベンダーがある場合、サブクエリは2つの電子メールを返しますが、サブクエリを値として使用すると、1行しか返されません。サブクエリにLIMIT 1を追加すると、これが発生したときにエラーを防ぐことができます。しかし、ベンダーの1つを予期せず選択することになります。テーブルを照合する信頼性の高い方法を考え出す必要があります。

+0

は、73のベンダーの私のケースではうまくいき、同じ都市、zipコンボではうまく機能しませんでした。 1アップと受け入れられた答え - ありがとう! – phpmydev

+0

これらの日のうちの1つでは、同じ都市に2つ目のベンダーとBOOMが登場します! – Barmar

0

COL1は= "455 Nチェロキーセント:マスコギー、OK 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,'%') 
) 
関連する問題