使用Mysql
并尝试使用CONCAT_WS
连接多行但我没有获得所需的输出。
我的表testtable
具有以下结构:
vardel1 int(50)
vardel2 int(50)
ComputeVariant varchar(50)
+----------+-------------------+----------------+
| vardel1d | vardel2 | ComputeVariant |
+----------+-------------------+----------------+
| 167 | 181 | NULL |
+----------+-------------------+----------------+
与我的testtable
我正在与另一个表(posnucleo
)进行联接以计算值2235
和2249
。
我想要的输出位于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
也不起作用。
您知道如何解决我的问题吗?
答案 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'
);