真正的問題是:你知道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()
讓你後提取從列表中的元素它們連接在一起。
OK現在,如果我的數據是這樣的 CREATE TABLE MY_TABLE( COL1 VARCHAR(255), COL2 VARCHAR(255), COL3 VARCHAR(255), COL4 VARCHAR(255) ); \t INSERT INTO MY_TABLE (COL1,COL2,COL3,COL4) VALUES ( '一個', 'col2data1', 'AA', 'AAA'), ( '一個', 'col2data2', 'AA' ''','a2'), ('a','col2data3','aa','aaa'), ('b','col2data11','bb','bbb'), 'col2data22','bb','bbb'), ('b','col2data33','bb','bbb') ; 想象更多的行。 – Joseph
@ user2515601:然後,上面的查詢將返回每個不同的'(col1,col3,col4)'組合的結果。 – eggyal
謝謝你好先生! – Joseph