Author: admin

  • MySQL – GROUP_CONCAT unique values

    [adsense id=”0514458240″ width=”468″ height=”60″]

    GROUP_CONCAT allows you to return a list of values in a single field. Consider the following table:

    mysql> select * from t1;
    +--------+------+------+
    | col1   | col2 | col3 |
    +--------+------+------+
    | ronan4 |  100 |  115 | 
    | ronan4 |  155 |  116 | 
    | ronan4 |  225 |  250 | 
    | ronan4 |  300 |  275 | 
    | ronan4 |  325 |  350 | 
    | ronan4 |    1 |    2 | 
    | ronan4 |    1 |    3 | 
    | t13    |    7 |    6 | 
    +--------+------+------+
    8 rows in set (0.00 sec)
    

    Here we want to return a list of the users in col1.

    mysql> select group_concat(col1) from t1;
    +------------------------------------------------------+
    | group_concat(col1)                                   |
    +------------------------------------------------------+
    | ronan4,ronan4,ronan4,ronan4,ronan4,ronan4,ronan4,t13 | 
    +------------------------------------------------------+
    1 row in set (0.00 sec)
    

    So far so good but what if we want to remove the duplicate values in this list. In this case here we need to specify a DISTINCT inside the GROUP_CONCAT function.

    mysql> select group_concat(distinct col1) from t1;
    +-----------------------------+
    | group_concat(distinct col1) |
    +-----------------------------+
    | ronan4,t13                  | 
    +-----------------------------+
    1 row in set (0.00 sec)
    

    [googleplus]