2017-02-28 3 views
0

エントリを持つ列がいくつか含まれているテーブルAがあります。列1には、表内で一意のキャンペーン名が表示されます。今度は、キャンペーン名が別のテーブル(テーブルB)に存在するときに、別の列の列の最後の2文字を変更したいとします(キャンペーン名がテーブルBにない場合、何も起こりません) 。 「新しい」2つの最後の文字は、表Bの列2の文字列の一部です(1はキャンペーン名です)。 - >どうすればいいですか?エントリーが別のテーブルに存在するときに、列内の文字列の最後の2文字を変更します。

Here's例:

例えばAが含まれているテーブルの場合:

|col1       ||col2   | 
+--------------------------------+---------------+------ 
|20161512_NL_Luxus_1_DE   ||NewsletterDE | 
|20161217_LC_YoBirthdayNo_A_CH ||LifecyclemailUK| 
|20161512_NL_Luxus_1_DE   ||BKMailCH  | 
|20161512_NL_SDT_4_DE   ||LifecyclemailDE| 
|20170117_SV_YoBirthdayYes_A_DE ||BKMailDE  | 
|20161512_NL_SDT_4_DE   ||NewsletterFR |  

とテーブルBが含まれる:

|col1       ||col2   | 
+--------------------------------+---------------+------ 
|20161217_LC_YoBirthdayNo_A_CH ||LifecyclemailCH| 
|20161512_NL_SDT_4_DE   ||NewsletterDE | 

を私は、テーブルAを変更しますクエリをしたいです〜へ:

|col1       ||col2   | 
+--------------------------------+---------------+------ 
|20161512_NL_Luxus_1_DE   ||NewsletterDE | 
|20161217_LC_YoBirthdayNo_A_CH ||LifecyclemailCH| 
|20161512_NL_Luxus_1_DE   ||BKMailCH  | 
|20161512_NL_SDT_4_DE   ||LifecyclemailDE| 
|20170117_SV_YoBirthdayYes_A_DE ||BKMailDE  | 
|20161512_NL_SDT_4_DE   ||NewsletterDE |  

私がこれまでに得たもの、この:

UPDATE table A INNER JOIN table B ON A.col1 = B.col1 SET A.col2 = CONCAT(SUBSTRING(A.col2), RIGHT(B.col2,2)); 

- >しかし、これは、事前に....正しく

おかげで動作していません!

答えて

1

私はこれがどうなると思う:

update tablea a 
join tableb b on a.col1 = b.col1 
set a.col2 = concat(
       susbtr(a.col2, 1, length(a.col2) - 2), 
       right(b.col2, 2) 
      ) 
関連する問題