使用连接和数组内匹配的Mysql

使用连接和数组内匹配的Mysql,mysql,arrays,Mysql,Arrays,我试图从表中选择所有学生,并将其与职员表联接,其中学生当前的班级位于职员的数组列表中。 我尝试了下面的查询,但当我在所选的staffstaff\u类中有多条记录时,它只显示一条记录。请告诉我如何让它工作 学校教职员 staff_id | staff_classes | staff_name --------------|-----------------|--------------------------- peter123 | A,B | Pe

我试图从表中选择所有
学生
,并将其与
职员
表联接,其中学生当前的班级位于
职员
的数组列表中。 我尝试了下面的查询,但当我在所选的staff
staff\u类中有多条记录时,它只显示一条记录。请告诉我如何让它工作

学校教职员

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
课程的员工手下的所有学生

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\u类是
A、B

上述查询的预期结果为:-

student_id     |  current_class    | student_name
---------------|-------------------|---------------------------
john123        | A                 |  John
paul123        | A                 | Paul
dev123         | B                 | Dev

您还需要在
groupby
中添加
student\u 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;
注意:确保
staff\u classes
列包含多个逗号分隔的值。单值也可以


.

您还需要在
分组人中添加
学生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;
注意:确保
staff\u classes
列包含多个逗号分隔的值。单值也可以


.

您可以添加预期的输出吗?请注意,像这样存储CSV不是理想的数据库设计。您可以添加预期的输出吗?请注意,像这样存储CSV并不是理想的数据库设计。