本当の問題は、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;
ただし、それでも 4 つの列しか生成されません。
それぞれに個別の列が必要で、番号がわかっている場合は、次のトリックを使用できます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()
、要素を連結した後でリストから要素を抽出できます。