我有一张这样的表:
// 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 |
+---------+
答案 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)