a表:
id    name 
1     张三
2     李四
3     王五
4     赵六b表:
id    class     aId
1      1         1
2      1         2
3      2         3
4      1         4
查询class=1的所有人的姓名
显示结果为:
class   name
1        张三,李四,赵六

解决方案 »

  1.   

    select b.class,group_concat(a.name) from a inner join b
    on a.id=b.aid group by b.class
      

  2.   

    root@localhost : test 04:32:29>select * from a;
    +------+--------+
    | id   | name   |
    +------+--------+
    |    1 | 张三   |
    |    2 | 李四   |
    |    3 | 王五   |
    |    4 | 赵六   |
    +------+--------+
    4 rows in set (0.00 sec)root@localhost : test 04:32:33>select * from b;
    +------+-------+------+
    | id   | class | aid  |
    +------+-------+------+
    |    1 |     1 |    1 |
    |    2 |     1 |    2 |
    |    3 |     2 |    3 |
    |    4 |     1 |    4 |
    +------+-------+------+
    4 rows in set (0.00 sec)root@localhost : test 04:32:34>select class,group_concat(name) as name from a,b where a.id=b.aid and class=1 group by class;+-------+----------------------+
    | class | name                 |
    +-------+----------------------+
    |     1 | 张三,李四,赵六       |
    +-------+----------------------+
    1 row in set (0.00 sec)
      

  3.   


    这种方法我知道,但是如果再多一个表关联在一起,有两个属性可能有多个值,这时候就会出问题。
    id  |   name    |     test
    1   |  张三,李四 |     a,a在这个查询中test并没有多个值,但是加上GROUP_CONCAT()之后就会出现这种问题,该怎么消除呢?