[英]MySQL Join multiple rows in one column with condition
ID|NAME |SURNAME
1 |James|Smith
2 |Jack |Sparrow
IDPERSON|IDDEPARTMENT
1 |1
1 |2
2 |2
ID|NAME
1 |customer_service
2 |store
我需要做的是選擇人員及其部門,並按一個或多個部門進行篩選。 現在,我可以選擇所有人員及其部門,但是無法按部門名稱過濾結果:
SELECT person.name, person.surname, GROUP_CONCAT(distinct department.name SEPARATOR ', ') as departments
LEFT JOIN peopledepartment ON person.id=department.idperson
INNER JOIN department ON peopledepartment.iddepartment=department.id
該查詢的輸出為:
NAME |SURNAME|DEPARTMENTS
James|Smith |customer_service, store
Jack |Sparrow|store
我需要按department.name ='customer_service'篩選結果,因此結果僅為:
NAME |SURNAME|DEPARTMENTS
James|Smith |customer_service, store
有任何想法嗎? 提前致謝!
使用having
子句:
SELECT p.name, p.surname,
GROUP_CONCAT(distinct d.name SEPARATOR ', ') as departments
FROM person p INNER JOIN
peopledepartment pd
ON p.id = pd.idperson INNER JOIN
department d
ON pd.iddepartment = d.id
GROUP BY p.name, p.surname
HAVING SUM(d.name = 'customer_service') > 0;
筆記:
group_concat()
可能不需要distinct
。 from
子句。 having
子句計算與給定部門匹配的行數。 > 0
表示存在至少一個這樣的匹配項。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.