2012-02-12 122 views
0

我有兩個包含商業信息的表,第一個讓我們稱它爲A(id,info,category)第二個讓我們稱它爲B(id,phone,category)。比較不同表中的2列mysql

A.info包含地址,電話和其他信息。 B.phone只包含一個電話號碼。

我想將B.category設置爲B.phone在A.info中存在的A.category。

我在想這樣的事情:

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

沒有運氣offcourse

+0

1)兩個ids是否匹配? 2)如果他們不這樣做,如果來自A的多個記錄具有相同的電話號碼和不同類別會發生什麼? – 2012-02-12 17:13:38

+0

ID不匹配,兩個表中都有一個部分列。所以重複不會是一個問題。其實我正在研究如何在列中使用通配符(類似%column%),但我什麼也沒找到。 – Alexk 2012-02-12 17:27:15

回答

2

好吧,給這個查詢一個嘗試:

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

thx男人,做了伎倆 – Alexk 2012-02-12 17:57:42

0

它看起來像您提供的文字A.Phone值而不是實際的列值。

你在你的評論中提到了使用通配符。如果您還需要更細化的控制,則可以使用REGEXP。

我不知道您的列數據類型是什麼,但這裏是相匹配的記錄 一個例子,其中a.info REGEXP CONCAT( '[[:<:]]',b.phone,「[[:> :]]')