2017-02-17 73 views
0

我真的不知道标题应该是什么样的,但这里的问题 我有2个表(实际上更多)SQL查询选取组合选择从多个表

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

尝试找寻GROUP_CONCAT。 – Scovetta

+0

已经在这里解答:http://stackoverflow.com/questions/194852/concatenate-many-rows-into-a-single-text-string –

+0

谢谢@Scovetta请发表回复,以便我可以答复 –

回答

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 |