我用的是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/

10-11 05:18