Mysql 嵌套的CONCAT_WS throws#1242-子查询返回超过1行错误
假设表t如下所示: t表:Mysql 嵌套的CONCAT_WS throws#1242-子查询返回超过1行错误,mysql,sql,Mysql,Sql,假设表t如下所示: t表: a b c d e a1 b1 c1 d1 e1 a2 b2 c2 d2 e2 a3 b3 c3 d3 e3 . . . . . . . . . . . . . . . 此查询引发#1242错误: SELECT CONCAT_WS( '*', (SELECT CONCAT_WS( '_', a, b, c) FROM t)) AS test 预期结果是: test a1_b
a b c d e
a1 b1 c1 d1 e1
a2 b2 c2 d2 e2
a3 b3 c3 d3 e3
. . . . .
. . . . .
. . . . .
此查询引发#1242错误:
SELECT CONCAT_WS( '*', (SELECT CONCAT_WS( '_', a, b, c) FROM t)) AS test
预期结果是:
test
a1_b1_c1*a2_b2_c2*a3_b3_c3*.....
什么是最好的解决方案?问题是“t”有多行。也许您需要以下选项之一:
SELECT CONCAT_WS( '*', (SELECT CONCAT_WS( '_', a, b, c) FROM t limit 1)) AS test
或
哎呀,我错过了问题中的预期结果。你想要:
select group_concat(vals SEPARATOR '*' ORDER BY t.id)
from (select concat_ws('_', a, b, c) as vals
from t
) t
(假设有一个名为“id”的列用于对结果进行排序。如果没有,则省略order by子句。)问题是“t”有多行。也许您需要以下选项之一:
SELECT CONCAT_WS( '*', (SELECT CONCAT_WS( '_', a, b, c) FROM t limit 1)) AS test
或
哎呀,我错过了问题中的预期结果。你想要:
select group_concat(vals SEPARATOR '*' ORDER BY t.id)
from (select concat_ws('_', a, b, c) as vals
from t
) t
(假设有一个名为“id”的列用于对结果进行排序。如果没有,请省略order by子句。)显示您的。显示您的。我建议分两步进行。内爆柱,然后使用组_CONCAT。Gordon Linoff提供的第三个选项正是我所需要的。谢谢你,Gordon,我说,分两步完成。内爆列,然后使用GROUP_CONCAT。Gordon Linoff提供的第三个选项完全符合我的需要谢谢你Gordon这也行,但Gordon解决方案不需要创建临时表感谢ficuscryeah这也行,但Gordon解决方案不需要创建临时表感谢ficuscr