0

我有一个这样的 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

父母的姓名将附加孩子的姓名,如姓氏。

4

2 回答 2

2

LEFT JOIN在这种情况下需要,因为.PARENT上没有匹配项ID

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
于 2013-05-02T06:52:07.147 回答
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
于 2013-05-02T06:51:52.123 回答