如何找到学生的兄弟姐妹

时间:2019-10-23 15:37:39

标签: mysql sql union siblings

我在mysql中有两个表,一个是student,另一个是student_sibling,结构如下。

Student:

student_id    name  
------------------
1             anu    
2             manu
3             tanu
4             pinu
..            ..

student_sibling表:

student_id    sibling_student_id
--------------------------------
1              4    
15             4    
2              1    
6              15

如果我将ID 1的同级插入为4,则语音反之亦然,同理1也是15和2的同级 例如,如果我想在mysql中显示任何student_id 4的兄弟姐妹,则它应显示:

1

2

6

15

我尝试了以下查询,但仅显示1和15: 预先感谢所有伟大的人

SELECT student_id  
FROM `student_sibling` 
WHERE student_id=4 or sibling_student_id=4
UNION 
SELECT sibling_student_id, 
FROM `student_sibling` 
WHERE student_id=4 or sibling_student_id=4

1 个答案:

答案 0 :(得分:0)

如果您使用的是MySQL 8.0或更高版本,则可以使用以下递归查询-

WITH RECURSIVE CTE AS (SELECT student_id
                       FROM student_sibling
                       WHERE sibling_student_id=4
                       UNION
                       SELECT S.student_id
                       FROM CTE C
                       JOIN student_sibling S ON S.sibling_student_id = C.student_id)
SELECT student_id FROM CTE
ORDER BY student_id;

Here是小提琴。