Mysql 连接几行

Mysql concat severals rows

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

我的 table testtable 具有以下结构:

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

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

与我的 testtable 我正在与另一个 table (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 也不行。

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

首先,使用明确的 join 语法和 table 别名,您的查询将更易于阅读。

我认为您将字符串连接过于复杂了。您可以将多个参数传递给 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'
                                  );