连接两个表,为第一个表中的每个唯一行返回一行

时间:2013-04-14 02:22:05

标签: mysql join

所以,我正试图从两个表中提取数据。我需要第一个表Tickets中的每个唯一行作为结果集中的唯一行。每个故障单可能在TicketsTags表中有多个与其关联的故障单标签。

当我运行以下查询时,我会为每个唯一的'tagid'获取一行:

select 
 `Tickets`.`id`,
 `TicketsTags`.`tagid` 
from 
 `Tickets` left join `TicketsTags`
on 
 `TicketsTags`.`ticketid` = `Tickets`.`id`
where 
 `Tickets`.`id` = 1

返回:

id | tagid
----------
1  | 1
1  | 2

我如何'追加'每个tagid作为它自己的列,或者创建一个数组?所以我结束了这个:

id | tag1 | tag2
----------------
1  | 1    | 2

感谢您的时间。

2 个答案:

答案 0 :(得分:1)

select 
`Tickets`.`id`,
GROUP_CONCAT(`TicketsTags`.`tagid`) as 'TagsID' 
from 
`Tickets` left join `TicketsTags`
on 
`TicketsTags`.`ticketid` = `Tickets`.`id`
where 
`Tickets`.`id` = 1
GROUP BY `Tickets`.`id`

答案 1 :(得分:0)

知道了,

select `Tickets`.`id`, group_concat(`TicketsTags`.`tagid`) from `Tickets` left join `TicketsTags` on `TicketsTags`.`ticketid` = `Tickets`.`id` where `Tickets`.`id` = 12 group by `Tickets`.`id`

使用group_concatgroup by会返回与故障单ID相关的每个tagid的逗号分隔字符串。

谢谢!