当entrie存在于另一个表

时间:2017-02-28 11:29:37

标签: mysql sql

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

以下是一个例子:

例如,如果表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 个答案:

答案 0 :(得分: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)
             )