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

解决方案 »

  1.   


    SELECT c_id,GROUP_CONCAT(c_name) c_names FROM goods GROUP BY c_id ORDER BY c_id;
      

  2.   

    如何不需要分字段
    SELECT c_id,GROUP_CONCAT(c_name) c_names FROM goods GROUP BY c_id ORDER BY c_id;
      

  3.   


    SELECT c_id,GROUP_CONCAT(c_name SEPARATOR ' ') c_names FROM goods GROUP BY c_id ORDER BY c_id;
      

  4.   


    查完怎么把GROUP_CONCAT(c_name)给解出来啊???显示如下
    c_id  name1  name2  name3
    10001  沙      石      煤 
    10002  沙      水      盐 
      

  5.   

    应该剔除重复的名称:
    SELECT c_id,GROUP_CONCAT(DISTINCT c_name SEPARATOR ' ') c_names FROM goods GROUP BY c_id ORDER BY c_id;
      

  6.   

    加入自增字段ID
    SELECT a.c_id,MAX(f1),MAX(f2),MAX(f3) FROM (
    SELECT *,
    IF(CEILING(id MOD 3)=1,c_name,'') AS f1,
    IF(CEILING(id MOD 3)=2,c_name,'') AS f2,
    IF(CEILING(id MOD 3)=0,c_name,'') AS f3
    FROM ttyy) a
    GROUP BY a.c_id
      

  7.   

    楼上写的也不是我想要的结果
    我要得到以下结果
    c_id  name1  name2  name3 
    10001  沙      石      煤 
    10002  沙      水      盐 
      

  8.   

    c_id  name1  name2  name3 
    10001  沙    石    煤 
    10002  沙    水    盐 如何控制 沙    石    煤  的顺序? 这个顺序是否没有要求?
    如果有要求,则你的表中需要再添加一个字段。
      

  9.   

    or
    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
      

  10.   

    c_id  name1  name2  name3 
    10001  沙    石    煤 
    10002  沙    水    盐 如何控制 沙    石    煤  的顺序? 这个顺序是否没有要求?
    如果有要求,则你的表中需要再添加一个字段。
      

  11.   

    现有表结构,不能直接用一句SQL处理,要不增加特别字段处理;要不用存储过程处理。
      

  12.   

    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>
      

  13.   

    怎么解出来?可以在客户端解啊,在sql语句中比较难处理。
      

  14.   

    根据表结构,种类名称不确定,有可能超过3个,除非采用动态sql输出。