2012-02-12 24 views
0

私はビジネス情報を含む2つのテーブルを持っています。最初のものはAが(id、info、category)を持っていて、もう1つはBが(id、phone、category)異なるテーブルの2つのカラムを比較するmysql

A.infoには住所、電話番号、その他の情報が含まれています。 B.phoneには電話番号だけが含まれています。

B.categoryをA.infoにB.phoneが存在するA.categoryとして設定したいと思います。

私はそのような何か考えていた:いいえ運がよければ

update A 
inner B 
set B.category = A.category 
where B.phone like %A.phone% 

をoffcourse

+0

1両方のIDは一致していますか? 2)そうでない場合は、Aの複数のレコードが同じ電話番号と異なるカテゴリを持つ場合はどうなりますか? –

+0

idsが一致しません両方のテーブルにセクションの列もあります。重複は問題にならないでしょう。実際に私はワイルドカードを列(%column%のようなもの)で使う方法を探していましたが、何も見つかりませんでした。 – Alexk

答えて

2

[OK]を、このクエリを試してみる:

update b, a 
set b.category = a.category 
where a.info like concat('%', b.phone, '%'); 
+0

トリックをやったThx男 – Alexk

0

リテラルを提供しているように見えますA.実際の列の値の代わりに電話の値。

コメントのいずれかでワイルドカードを使用していることについてもお伝えしました。より詳細な制御が必要な場合は、REGEXPを使用することもできます。

カラムのデータ型はわかりませんが、ここではレコードと一致する例を示します a.info REGEXP concat( '[[:012::]]、b.phone、' [[:> :]] ')