Mysql 用三个表连接和分组
表格详情: 我的问题是: 但我在d1,d2,d11,d22中得到了多个数据,因为第二个左连接 预期产出:Mysql 用三个表连接和分组,mysql,Mysql,表格详情: 我的问题是: 但我在d1,d2,d11,d22中得到了多个数据,因为第二个左连接 预期产出: 实际上,我正在使用jdbc将数组数据从api存储到mysql。我在三个表中插入了数据。现在,我必须检索这些数据并形成数组格式,然后将其发送到web api,这里有人知道怎么做吗?我需要进行嵌套查询吗?请添加您为实现所需而做的努力,共享您的源代码。感谢@agtabesh,我在提出正确问题方面取得了更大的进展,格式是clearSee GROUP_CONCAT-尽管我会在应用程序代码中处理此类问题
实际上,我正在使用jdbc将数组数据从api存储到mysql。我在三个表中插入了数据。现在,我必须检索这些数据并形成数组格式,然后将其发送到web api,这里有人知道怎么做吗?我需要进行嵌套查询吗?请添加您为实现所需而做的努力,共享您的源代码。感谢@agtabesh,我在提出正确问题方面取得了更大的进展,格式是clearSee GROUP_CONCAT-尽管我会在应用程序代码中处理此类问题。如上所述,认真考虑应用程序代码中的数据显示问题。谢谢草莓,它实际上与两个表一起工作,如果我添加另一个左边,如我的应用程序代码中所示的x表值a1,b1,c1,a1,b1,c1像那样返回两次,我将在new.Cool中上传错误-记住,当投稿人开始注意到你的投票记录时,他们可能不愿意在将来提供帮助。
SELECT t1.id
, GROUP_CONCAT(t2.data ORDER BY t2.data) x
FROM Table1 t1
LEFT
JOIN Table2 t2
ON t2.id = t1.id
GROUP
BY t1.id;
+----+----------+
| id | x |
+----+----------+
| 15 | A1,B1,C1 |
| 16 | H |
| 17 | NULL |
+----+----------+
select
t1.user,
t1.id,
group_concat(t2.data1 ) d1,
group_concat( t2.data2) d2,
group_concat( t3.data11 ) d11,
group_concat(t3.data22 ) d22
from table1 t1
left join table2 t2
on t2.id = t1.id
left join table3 t3
on t3.id = t1.id
where t1.user='bob' group by t1.id;
+-------+------+------------+-----------+---------------+---------------+
| user | id | d1 | d2 | d11 | d22 |
+-------+------+------------+-----------+---------------+---------------+
| bob | 1 | a,b,b | a1,b1,c1 | a10,b10,c10 | a11,b11,c11 |
| bob | 2 | a,b | d1,e1 | d10,e10 | d11,e11 |
+-------+------+------------+-----------+---------------+---------------+
SELECT t1.id
, GROUP_CONCAT(t2.data ORDER BY t2.data) x
FROM Table1 t1
LEFT
JOIN Table2 t2
ON t2.id = t1.id
GROUP
BY t1.id;
+----+----------+
| id | x |
+----+----------+
| 15 | A1,B1,C1 |
| 16 | H |
| 17 | NULL |
+----+----------+
SELECT t1.user,
t1.id,
t2.d1,
t2.d2,
t3.d11,
t3.d22
FROM table1 t1
LEFT JOIN (SELECT t2.id,
group_concat(t2.data1) d1,
group_concat(t2.data2) d2
FROM table2 t2
GROUP BY t2.id) t2
ON t2.id = t1.id
LEFT JOIN (SELECT t3.id,
group_concat(t3.data11) d11,
group_concat(t3.data22) d22
FROM table3 t3
GROUP BY t3.id) t3
ON t3.id = t1.id
WHERE t1.user = 'bob';