0
我有2個SQL表。MYSQL - GROUP_CONCAT只顯示重複項
- 第一個表格具有department-ids到student-id的映射。 (一個學生可能屬於多個部門,一個部門有很多學生)。
- 第二張表格中有學生和他們愛好的映射。 (其中也有一個多對多的關係)
表樣本快照:
DESC DEPARTMENT_STUDENTS;
----------------------------
DEPT_ID STUDENT_ID
----------------------------
Physics 123
Mathematics 111
Physics 111
CS 45
CS 56
Mathematics 89
DESC STUDENTS_HOBBIES;
-------------------------------
STUDENT_ID HOBBY
-------------------------------
111 Skiing
111 Singing
111 Browsing
123 Singing
123 Browsing
123 Reading
45 Origami
56 Origami
56 Making Prank Calls
89 Reading
我要尋找一個查詢,將提供中所有學生每個部門共同愛好列表。 需要的輸出將如下所示:
-----------------------------------------
DEPT_ID GROUP_CONCAT(...)
-----------------------------------------
Physics (Singing, Browsing)
Mathematics ()
CS (Origami)
我幾乎沒有和擺弄周圍與MySQL的一點點之後,我能夠將所有(而不是常見的)一個部門的愛好。 GROUP_CONCAT還提供了消除重複的方法。我能想到的,一種方法是檢索重複編程在下面的查詢:
SELECT DEPT_ID, GROUP_CONCAT(OP.HOBBIES) FROM DEPARTMENT_STUDENTS DS
INNER JOIN (SELECT STUDENT_ID, GROUP_CONCAT(HOBBY)AS HOBBIES FROM STUDENTS_HOBBIES
GROUP BY STUDENT_ID) OP
ON OP.STUDENT_ID = DS.STUDENT_ID
GROUP BY DS.DEPT_ID;
有沒有辦法單獨保存副本?即使在這個查詢中,也歡迎任何優化。謝謝!
由你自己先嚐試寫作查詢。如果您有任何錯誤,請在此處詢問。 – Neo
對不起。我的錯。也會更新它們。 – Anonymous