sql查询选择组合从多个表中选择

时间:2017-02-17 06:58:03

标签: sql select string-aggregation

我真的不知道标题应该是什么,但问题就在这里 我有2张桌子(实际上更多)

 table a               table b  
id (pk)| country     id(fk)| Branch
------ | ------      ------|--------
01     | Indonesia   01    | Jakarta
                     01    | Bali

如果我做select * from a,b where a.id=b.id 结果将是

id | Country  |Branch
01 | Indonesia|Jakarta
01 | Indonesia|Bali

我希望结果如下所示

id | Country   | Branch
01 | Indonesia | Jakarta,Bali

有可能吗? 我真的不想做研究(我的意思是搜索)因为我不知道应该搜索什么关键字

1 个答案:

答案 0 :(得分:0)

使用MySQL时,GROUP_CONCAT是您正在寻找的功能。

像上面的请求中那样设置表格:

create table a (
  `id` int(15) auto_increment primary key,
  `country` varchar(200)
);

create table b (
  `id` int(15) not null,
  `branch` varchar(200),
  foreign key(`id`) references a(`id`)
);

insert into a values (1, 'Indonesia');
insert into b values (1, 'Jakarta');
insert into b values (1, 'Bali');

执行查询:

select a.id, 
    a.country, 
    group_concat(distinct b.branch) as 'branch'
from a 
    left join b on a.id=b.id;

输出:

| id |   country |       branch |
|----|-----------|--------------|
|  1 | Indonesia | Jakarta,Bali |