mysql查询结果。将三列值转换为结果中的一行,并按第一列值排序

时间:2015-07-20 10:55:14

标签: mysql sql database

表中的值 来源表:

column1 column2 column3
1         6      2
1         6      4
1         6      3
1         7      2
1         7      3
1         7      4
2         8      5
2         8      1

预期结果:

1 6 7 2 3 4
2 8 1 5

对于所有column1值:" 1"我需要第二列值第一列和第三列值继续在单行中,如预期结果中所述。 第2列的值相同:" 2"我需要单行中的所有值。

请建议可能的解决方案。 感谢。

2 个答案:

答案 0 :(得分:0)

这应该足够接近:

SELECT col1
     , CONCAT_WS(
       ' ',
       GROUP_CONCAT(DISTINCT col2 SEPARATOR ' '),
       GROUP_CONCAT(DISTINCT col3 SEPARATOR ' ')
     ) as cnct
FROM your_table
GROUP BY col1

See live example.

编辑:even better

SELECT CONCAT_WS(
       ' ',
       col1,
       GROUP_CONCAT(DISTINCT col2 ORDER BY col2 SEPARATOR ' '),
       GROUP_CONCAT(DISTINCT col3 ORDER BY col3 SEPARATOR ' ')
     ) as cnct
FROM your_table
GROUP BY col1

答案 1 :(得分:0)

像这样。

SELECT Concat(column1, ' ', Group_concat(DISTINCT column2 SEPARATOR ' '), ' ', 
              Group_concat(DISTINCT column3 SEPARATOR ' ')) 
FROM   tsts 
GROUP  BY column1 

SQLFIDDLE DEMO