Nếu bạn biết số lượng mục nhập GROUP_CONCAT (ý tôi là 3 trường được kết hợp trong trường hợp ID =1 và 2 trường được kết hợp trong trường hợp 2, v.v.), thì đó là một cách sai.
SELECT ID, SUBSTRING_INDEX(SUBSTRING_INDEX(GROUP_CONCAT(NAME), ',', 1), ',', -1) AS CODE1,
If( length(GROUP_CONCAT(NAME)) - length(replace(GROUP_CONCAT(NAME), ',', ''))>1,
SUBSTRING_INDEX(SUBSTRING_INDEX(GROUP_CONCAT(NAME), ',', 2), ',', -1) ,NULL)
as CODE2,
SUBSTRING_INDEX(SUBSTRING_INDEX(GROUP_CONCAT(NAME), ',', 3), ',', -1) AS CODE3
FROM test
GROUP BY ID;
Đầu ra:
ID CODE1 CODE2 CODE3
1 A B C
2 D (null) E
3 F G H
Truy vấn trên giả định rằng bạn đang GROUP_CONCAT nhập 3 trường. Nếu bạn đang tạo truy vấn động, bạn có thể thử. SQLFIDDLE
CHỈNH SỬA: Lưu ý:MÃ có thể khác nhau đối với mỗi ROW. (Bỏ qua điều này)