如何使用Alias和聚合或concat

时间:2016-01-22 02:01:48

标签: mysql sql

1个用户在tbl_activity中有多条记录,并且有diplay_name,我想将所有这些记录连成一列名称activity_name

SELECT * 
FROM `tbl_user` 

INNER JOIN `tbl_user_authassignment` 
ON  `tbl_user`.`id` =  `tbl_user_authassignment`.`userid`

INNER JOIN `tbl_activity` 
`tbl_activity`.`id` AS 'activityid'
ON  `tbl_user`.`id` =  `tbl_activity`.`vendor_id`  


WHERE  `tbl_user_authassignment`.`itemname` = 'vendor'

2 个答案:

答案 0 :(得分:0)

在MySQL(由您的语法建议)中,您可以使用group_concat()。我不知道你关心哪些领域,但它是这样的:

SELECT u.*, group_concat(a.acitvityid) as activityids
FROM `tbl_user` u INNER JOIN
     `tbl_user_authassignment` ua
     ON u.`id` =  ua.`userid` INNER JOIN      
     `tbl_activity` a
      ON u.`id` =  a.`vendor_id`  
WHERE  ua`.`itemname` = 'vendor'
GROUP BY u.id;

答案 1 :(得分:0)

看起来是MySQL语法,因此您可以将GROUP_CONCAT()用于此目的

SELECT tu.*, 
xx.`id` AS 'activityid',
xx.activity_name
FROM `tbl_user` tu

INNER JOIN `tbl_user_authassignment` tua
ON  tu.`id` =  tua.`userid`

INNER JOIN ( 
select `vendor_id`,
`id`,
group_concat(diplay_name) as activity_name
from `tbl_activity` 
group by `vendor_id`) xx ON  tu.`id` =  tua.`vendor_id`  

WHERE  tua.`itemname` = 'vendor';