Mysql concat几行

时间:2016-02-01 13:01:27

标签: mysql multiple-columns rows concat

使用Mysql并尝试使用CONCAT_WS连接多行但我没有获得所需的输出。

我的表testtable具有以下结构:

vardel1 int(50)
vardel2 int(50)
ComputeVariant varchar(50)

+----------+-------------------+----------------+
| vardel1d | vardel2           | ComputeVariant |
+----------+-------------------+----------------+
|  167     | 181               |  NULL          |
+----------+-------------------+----------------+

与我的testtable我正在与另一个表(posnucleo)进行联接以计算值22352249

我想要的输出位于ComputeVariant列中:

c.2235_2249del

我的sql查询如下:

update testtable, posnucleo
   set testtable.ComputeVariant = CONCAT_WS( CONCAT('c.', abs(((posnucleo.1stpos - posnucleo.1stnuclocode) - testtable.vardel1 )) ), CONCAT('_',abs(((posnucleo.1stpos - posnucleo.1stnuclocode) - testtable.vardel2 )),'del' ) )
 where testtable.Reference = posnucleo.amplicon

我的问题是我没有所需的输出。我也尝试与||联系,但它似乎也不起作用。 GROUP_CONCAT也不起作用。

您知道如何解决我的问题吗?

1 个答案:

答案 0 :(得分:0)

首先,使用显式join语法和表别名更容易阅读您的查询。

我认为你的字符串连接过于复杂。您可以将多个参数传递给concat(),如下所示:

update testtable tt join
       posnucleo pn
       on tt.Reference = pn.amplicon
    set tt.ComputeVariant = CONCAT('c.',
                                   abs((pn.1stpos - pn.1stnuclocode) - tt.vardel1 ) ),
                                   '_',
                                   abs((pn.1stpos - pn.1stnuclocode) - tt.vardel2 ),
                                   'del'
                                  );