先通过select sid,goods_count,  GROUP_CONCAT(CONCAT(goods_name,' '))  from qg_sell group by sid,goods_count;得到如下结果:
sid   goods_count  GROUP_CONCAT(CONCAT(goods_name,' '))25 1 罗汉果 
27 2 罗汉果 
29 1 罗汉果 
31 1 罗汉果 ,碧螺春 
33 2 罗汉果 
33 3 碧螺春 
因为sid: 31的2个物品,罗汉果和碧螺春都是一份即(goods_count=1)所以可以合并而sid:33的两个物品,数量不一样,不能合并。我想输出为:33     罗汉果*2、碧螺春*3  这样的形式,该怎么写呢?

解决方案 »

  1.   

    GROUP_CONCAT(CONCAT(goods_name,' *',goods_count))
      

  2.   

    你的描述就是要用sid分组 而不是原来的分组
    语句如下:
    select sid, GROUP_CONCAT(CONCAT(goods_name,'*',goods_count)) 
    from qg_sell 
    group by sid;
      

  3.   

    select sid, GROUP_CONCAT(CONCAT(goods_name,if(goods_count>1,CONCAT('*',goods_count),'')))
    from qg_sell  
    group by sid;
      

  4.   

    执行后显示是:
    sid
    24 罗汉果*5
    25 罗汉果
    27 罗汉果*2
    29 罗汉果
    31 罗汉果,碧螺春
    33 碧螺春*3,罗汉果*2非常感谢!还有个问题,如果要把结果前面的sid,替换为qg_sellid表里的id对应的user_name,该如何改动?(qg_sellid里的id与qg_sell里的sid相同)
      

  5.   

    我就是想将  SELECT sid,qg_sellid.user_name,qg_sell.goods_name  FROM qg_sell,qg_sellid WHERE qg_sellid.id = qg_sell.sid AND qg_sell.sid = qg_sellid.id;和 select sid, GROUP_CONCAT(CONCAT(goods_name,if(goods_count>1,CONCAT('*',goods_count),'')))
    from qg_sell  
    group by sid;合并成一句...不知道行不行。最后输出的就是user_name goods_name
    张三        罗汉果*3,碧螺春*2
      

  6.   

     (不要高估你的汉语表达能力或者我的汉语理解能力)
       建议你列出你的表结构,并提供测试数据以及基于这些测试数据的所对应正确结果。
       参考一下这个贴子的提问方式http://topic.csdn.net/u/20091130/20/8343ee6a-417c-4c2d-9415-fa46604a00cf.html
       
       1. 你的 create table xxx .. 语句
       2. 你的 insert into xxx ... 语句
       3. 结果是什么样,(并给以简单的算法描述)
       4. 你用的数据库名称和版本(经常有人在MS SQL server版问 MySQL)
       
       这样想帮你的人可以直接搭建和你相同的环境,并在给出方案前进行测试,避免文字描述理解上的误差。   
      

  7.   

    是这样:一个表:qg_sellid     另一个:qg_sellqg_sellid 表里有 id、user_name
    qg_sell    表里有 sid、goods_name、goods_count这2个表里的id和sid是对应的,方便联合查询-------------------------------------
    我想得出:当id=sid时,列出如下结果user_name    goods_name
    张三            碧螺春*3
      

  8.   

    select se.user_name, GROUP_CONCAT(CONCAT(goods_name,'*',goods_count))  
    from qg_sell  s join qg_sellid se on s.sid=se.id
    group by se.user_name;