我用的是MySQL,
在我的数据库中,有一个表:
+-----------------------------+
| ID NAME ID_FATHER |
+-----------------------------+
| 1 Mylodi 0 |
| 2 Jack 0 |
| 3 Linda 1 |
| 4 Mark 2 |
| 5 Simon 4 |
| 6 Sacha 1 |
| 7 Edward 1 |
+-----------------------------+
通过这个查询,我检索了他父亲的每个名字:
select f.name as father, s.name as son from family s, family f where s.id_father = f.id
结果
+------------+---------+
| father | son |
+------------+---------+
| mylodi | linda |
| Jack | mark |
| mark | simon |
| mylodi | sacha |
| mylodi | edward |
+------------+---------+
但是,我的问题是,我怎样才能得到这个结果,但是在这样一个专栏里:
+--------+
| colum |
+--------+
| Mylodi |
| linda |
| sacha |
| edward |
| jack |
| mark |
| simon |
+--------+
这意味着我想显示父亲的名字,在每个父亲的名字下面显示他儿子的名字。谢谢。
编辑
这是我的数据库structure
最佳答案
这样怎么样:
SELECT name FROM (
SELECT id, name, id sort1, id_father sort2 FROM family WHERE id_father = 0
UNION
SELECT id, name, id_father, 1 sort2 FROM family WHERE id_father <> 0
) AS v
ORDER BY sort1, sort2
这里有一个更新的fiddle。
关于mysql - 一列显示父亲,儿子的查询,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/21101177/