2013-05-02 133 views
0

我有一个MySQL表这样的 -MySQL查询建议

ID NAME  PARENT 
===================== 
1  Class 0 
2  Math  1 
3  Physics 1 
4  Cooking 0 
5  Italian 4 
6  Chinese 4 

我想要一个查询,会给我这个输出 -

ID NAME 
===================== 
1  Class 
2  Math Class 
3  Physics Class 
4  Cooking 
5  Italian Cooking 
6  Chinese Cooking 

父母的名字将与孩子的名字被追加,像姓。因为有PARENT是对ID敌不过

+0

'CONCAT'将帮助你。 – 2013-05-02 06:50:46

+0

使用concat和CASE选择语句,,,给出一个镜头并发布错误,至少你试试 – 2013-05-02 06:52:46

+0

@javalovers为什么'CASE()'? – 2013-05-02 06:58:26

回答

0
SELECT t1.ID, CONCAT(t1.NAME, ' ', t2.NAME) AS NAME 
FROM your_table t1 
INNER JOIN your_table t2 ON t1.PARENT = t2.ID 
2

LEFT JOIN需要在这种情况下。

SELECT a.ID, 
     CONCAT(a.Name, ' ', COALESCE(b.name,'')) Name 
FROM TableName a 
     LEFT JOIN TableName b 
      ON a.Parent = b.ID 

你也可以使用CONCAT_WS()这样就可以省略COALESCE()

SELECT a.ID, 
     CONCAT_WS(' ', a.Name, b.name) Name 
FROM TableName a 
     LEFT JOIN TableName b 
      ON a.Parent = b.ID