id need name
1 aaaa 名称1
2 bbbb 名称2
3 cccc 名称1
4 dddd 名称1
5 eeee 名称2
6 ffff 名称1
mysql里建上面这样一张表,name字段是关联字段,想一条sql语句通过name字段 把所有need查询出来,比方说现在想查询出name字段值为名称1的need数据,
需求是查询出的记录是一条,就是这样的:
aaaa cccc dddd ffff 名称1再比方说查询出name字段值为名称2的need数据,则需要查询出这样的结果:
bbbb eeee 名称2
这个需求比较怪异 小弟新手不能完成 在此请教大牛帮忙实现 在线等 谢谢了 祝好心人一生平安

解决方案 »

  1.   

    select name,group_concat(need) from tablename group by name having name = '名称1'
      

  2.   


    对不起大牛 您理解错了 不是我要的结果比方说现在想查询出name字段值为名称1的need数据,
    需求是查询出的记录是一条,就是这样的:
    aaaa cccc dddd ffff 名称1
    这个结果是5个字段
    第一个字段值 aaaa
    第二个字段值 cccc
    第三个字段值 dddd
    第四个字段值 ffff
    第五个字段值 名称1
    而您提供的结果只有2个字段,显然是不对的,继续在线等
      

  3.   

    为啥非要弄成5个字段呢 上面的结果是吧aaaa cccc dddd ffff组合成一个字段了,你要什么结果在后台把这个字段拆分下就可以了啊
      

  4.   

    你这思维是不对的 因为name = '名称1'的条数是不确定的 所以字段也是不确定 现在有5个字段到时候换个name = '名称2'的条件时字段就有只有3个了 如何换个条件呢name = '名称3'那时候的字段又是多少?好好想想
      

  5.   

    select group_concat(need) from tt where name = '名称1' group by name 
      

  6.   

    select group_concat(need) ,name
    from 这样一张表
    group by name
      

  7.   

    对不起大牛 您理解错了 不是我要的结果比方说现在想查询出name字段值为名称1的need数据,
    需求是查询出的记录是一条,就是这样的:
    aaaa cccc dddd ffff 名称1
    这个结果是5个字段
    第一个字段值 aaaa
    第二个字段值 cccc
    第三个字段值 dddd
    第四个字段值 ffff
    第五个字段值 名称1
    而您提供的结果只有2个字段,显然是不对的,继续在线等 
      

  8.   

    对不起大牛 您理解错了 不是我要的结果比方说现在想查询出name字段值为名称1的need数据,
    需求是查询出的记录是一条,就是这样的:
    aaaa cccc dddd ffff 名称1
    这个结果是5个字段
    第一个字段值 aaaa
    第二个字段值 cccc
    第三个字段值 dddd
    第四个字段值 ffff
    第五个字段值 名称1
    而您提供的结果只有2个字段,显然是不对的,继续在线等 
      

  9.   

    没有理解,是交叉表查询?
    字段1 字段2 字段3 字段4 字段5
    aaaa   cccc  dddd  ffff 名称1
    是这样?
      

  10.   

    select group_concat(need) from tt where name = '名称1' group by name 
    你测试过没有?只有1个字段、1条记录
      

  11.   

    http://blog.csdn.net/acmain_chm/article/details/4283943
    MySQL交叉表
    在某些数据库中有交叉表,但在MySQL中却没有这个功能,但网上看到有不少朋友想找出一个解决方法,特发贴集思广义。http://topic.csdn.net/u/20090530/23/0b782674-4b0b-4cf5-bc1a-e8914aaee5ab.html?96198现整理解法如下:数据样本: create table tx(  id int primary key,  c1 c...
      

  12.   

    select group_concat(need) from tb
    where name='名称1'
    group by name;
      

  13.   


    字段1 字段2 字段3 字段4 字段5
    aaaa   cccc  dddd  ffff 名称1是要这样的结果,新手搞不定,做不到,是不是这个需求无法实现?
      

  14.   

    用SQL语句无法做到,用SP来完成,
    打开select (need) from tt where name = '名称1' 记录集,
    字符否则再执行
      

  15.   

    用SQL语句无法做到,用SP来完成,
     打开select need from tt where name = '名称1' 记录集,游标循环取值
     字符串累加生成SQL语句,再执行
      

  16.   

    查询出结果后做一下字符串连接:
    select concat(group_concat(need),',',name) from tb2 where name ='name1' group by name;+-------------------------------------+
    | concat(group_concat(need),',',name) |
    +-------------------------------------+
    | aa,cc,dd,ff,name1                   | 
    +-------------------------------------+
    1 row in set (0.00 sec)