真正的问题是:你知道你有多少 col2data 值吗?
规范的答案是用来group_concat()
获取值:
select col1data, col3data, col4data, group_concat(col2data)
from t
group by col1data, col3data, col4data;
这将创建一个逗号分隔的列表。您可以花哨并包含空格而不是逗号:
select col1data, col3data, col4data, group_concat(col2data separator ' ')
from t
group by col1data, col3data, col4data;
但是,这仍然只产生四列。
如果您想要为每个单独的列并且您知道数字,则可以使用以下技巧group_concat()
:
select col1data, col3data, col4data,
substring_index(group_concat(col2data order by col2data), ',', 1),
substring_index(substring_index(group_concat(col2data order by col2data), ',', 2), ',', -1),
substring_index(substring_index(group_concat(col2data order by col2data), ',', 3), ',', -1),
from t
group by col1data, col3data, col4data;
的使用substring_index()
允许您在将元素连接在一起后从列表中提取元素。