我在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
答案 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是小提琴。