c_id   c_name   
10001   沙
10001   石
10001   煤
10002   沙
10002   水
10002   盐查询如何写查询条件 显示结果如下 表名goods10001 沙   石   煤
10002 沙   水   盐请大大赐教

解决方案 »

  1.   

    SELECT a.c_id, 
    MAX(IF(CEILING(id MOD 3)=1,c_name,'')) AS name1, 
    MAX(IF(CEILING(id MOD 3)=2,c_name,'')) AS name2, 
    MAX(IF(CEILING(id MOD 3)=0,c_name,'')) AS name3 
    FROM ttyy a 
    GROUP BY a.c_id 自己修改一下字段嘛,注意加入自增字段ID
      

  2.   

    mysql> select * from t_dawenwen1128;
    +-------+--------+
    | c_id  | c_name |
    +-------+--------+
    | 10001 | 沙     |
    | 10001 | 石     |
    | 10001 | 煤     |
    | 10002 | 沙     |
    | 10002 | 水     |
    | 10002 | 盐     |
    +-------+--------+
    6 rows in set (0.00 sec)mysql> select c_id,
        ->  SUBSTRING_INDEX(k,',',1) as name1,
        ->  SUBSTRING_INDEX(SUBSTRING_INDEX(k,',',2),',',-1) as name2,
        ->  SUBSTRING_INDEX(SUBSTRING_INDEX(k,',',3),',',-1) as name3
        -> from (
        ->  select c_id,group_concat(c_name) as k
        ->  from t_dawenwen1128
        ->  group by c_id
        -> ) t ;
    +-------+-------+-------+-------+
    | c_id  | name1 | name2 | name3 |
    +-------+-------+-------+-------+
    | 10001 | 沙    | 石    | 煤    |
    | 10002 | 沙    | 水    | 盐    |
    +-------+-------+-------+-------+
    2 rows in set (0.08 sec)mysql>