我正在尝试从表中选择所有 student
并将其与 staff
表连接,其中学生 current_class
在 的数组列表中员工
staff_classes
。
我试过下面的查询,但当我在选定的员工 staff_classes
中有多个记录时,它只显示一个记录。请知道如何让它工作。
学校员工
staff_id | staff_classes | staff_name
--------------|-----------------|---------------------------
peter123 | A,B | Peter
fara123 | A | Fara
学生
student_id | current_class | student_name
---------------|-------------------|----------------
john123 | A | John
paul123 | A | Paul
dev123 | B | Dev
heg123 | C | Heg
mag123 | C | Mag
我目前的尝试。
下面我实际要做的是列出管理 A
和 B
类(class)的所有学生。
SELECT st.student_name, st.student_id,
GROUP_CONCAT(st.student_id ORDER BY FIND_IN_SET(st.current_class , 'A,B'))
FROM students AS st
JOIN school_staffs AS stf ON FIND_IN_SET(st.current_class , 'A,B') > 0
GROUP BY st.current_class
假设当前登录的员工是 peter123
并且 staff_classes
是 A,B
上述查询的预期结果是:-
student_id | current_class | student_name
---------------|-------------------|---------------------------
john123 | A | John
paul123 | A | Paul
dev123 | B | Dev
最佳答案
您还需要在group_by
中添加student_id
。
SELECT s.*, ss.staff_name FROM `students` AS s, `school_staffs` AS ss
WHERE FIND_IN_SET(s.current_class, ss.staff_classes)
GROUP BY s.current_class, s.student_id;
Note : Make sure
staff_classes
column contains comma separated values for multiple. It is okay for single value.
关于Mysql使用连接和数组匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57122824/