当前行为空时如何选择相关行?

时间:2016-05-16 17:13:13

标签: mysql sql

我有一张这样的表:

// mytable
+----+---------+---------+
| id |  name   | related |
+----+---------+---------+
| 1  | Jack    | 1       |
| 2  |         | 1       |
| 3  |         | 1       |
| 4  |         | 2       |
| 5  | peter   | 2       |
| 6  | peter   | 2       |
| 7  |         | 2       |
| 8  | jhon    | 4       |
| 9  |         | 3       |
| 19 | ali     | 3       |
| 20 |         | 4       |
| 21 |         | 4       |
+----+---------+---------+

我所拥有的只是一个身份证号码,这是我的疑问:

SELECT name FROM mytable WHERE id = :id LIMIT 1

在我的查询中,有时name为空。所以我试图选择相关名称,我该怎么做?

以下是一些示例:(加上预期输出)

:id = 1
+---------+
| Jack    |
+---------+

:id = 2
+---------+
| Jack    |
+---------+

:id = 21
+---------+
| jhon    |
+---------+

:id = 6
+---------+
| peter   |
+---------+

1 个答案:

答案 0 :(得分:1)

下面的查询将适用于ID 1,2和6.我不确定如何将id 21变为等于jhon。如果我四次加入桌子,我会去杰克。我希望这会有所帮助。

SELECT (CASE WHEN A.name IS NULL THEN B.name ELSE A.name END) 
FROM mytable A LEFT JOIN mytable B ON (A.related=B.id)