用户表
String gender;
if(Math.random() > 0.5) gender = "MALE";
else gender = "FEMALE";
设备表
id | emailAddress
1 user@test.com
2 user2@test.com
我想在列中展平相关设备表的结果。这是我尝试使用子查询。
uuid | user_id
xyz 1
abc 1
zzz 1
a11 2
g222 2
我希望我的结果输出是这样的。
SELECT id, emailAddress, (
SELECT uuid FROM device
WHERE user_id = user.id
) AS devices
FROM user;
但我也希望明确我的目标,或许是为了实现我想要的横向方法,最终我想在我的Java代码中填充这个UserBean。即获取所有用户和每个用户设备清单。
1, user@test.com xyz, abc, zzz
2, user2@test.com a112, g222
答案 0 :(得分:1)
您可以使用 GROUP_CONCAT
按uuid
和id
连接emailAddress
列值组。
<强>查询强>
select t1.`id`, t1.`emailAddress`,
group_concat(t2.`uuid`)
from `users` t1
join `devices` t2
on t1.`id` = t2.`user_id`
group by t1.`id`, t1.`emailAddress`;
<强> Find a demo here 强>
答案 1 :(得分:0)
如果要展平结果,请使用MySQL GROUP_CONCAT Function。你应该加入你的表格,如下所示:
SELECT A.id, A.emailAddress, GROUP_CONCAT(DISTINCT B.uuid ORDER BY B.uuid SEPARATOR ',') AS devices
FROM `user` A LEFT JOIN device B
ON A.id=B.user_id
GROUP BY A.id, A.emailAddress;
请参阅SQL小提琴上的DEMO。