2017-02-28 51 views
0

我有一个表A,其中包含几个包含条目的列。第1栏是表格中唯一的广告系列名称。现在我想在另一个表格(表格B)中存在广告系列名称时更改另一列中字符串中最后两个字母(如第2列)(如果广告系列名称不在表格B中,则不会发生任何事情) 。表B中第2列(1也是活动名称)中的“新”两个最后一个字母是字符串的一部分。 - >我该怎么做?如果在另一个表中存在entrie,则更改列中字符串中的最后两个字母

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 | 

我想要一个查询,将改变一个表到:

|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) 
      ) 
相关问题