簡體   English   中英

帶有IN子句的group_concat中的子查詢

[英]subquery in group_concat with IN clause

tbl_a

id  dept_id
1   1,2,3
2   2,3
3   1  

tbl_b

dept_id  dept
1        a
2        b
3        c  

我的查詢:

SELECT id, (SELECT GROUP_CONCAT(dept)  FROM tbl_b
WHERE tbl_b.dept_id IN (tbl_a.dept_id)) as departments
FROM tbl_a

這只返回tbl_a.dept_id的第一個值。 我希望得到一個結果。

id      departments
1       a,b,c
2       b,c
3       a 

首先,如果可以更改結構然后對其進行規范化 ,請使用存儲表a的id的聯結表和表b中具有一對多關系的id,如果無法更改模式,則可以使用find_in_set

select a.id,group_concat(b.`dept` order by b.`dept`) departments
from a 
join b on(find_in_set(b.dept_id,a.dept_id) > 0)
group by a.id

演示

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM