自助加入的工作原理

How self join works

我有一个客户table:

ID  Name  Referred_id  
1   aaa
2   bbb   1
3   ccc   2
4   ddd   2
5   eee   4

我想要一个新列 referred_name 来显示谁根据 referred_id 推荐了哪个客户,输出应该是:

ID  Name  Referred_id  Referred_name
1   aaa
2   bbb   1               aaa
3   ccc   2               bbb
4   ddd   2               bbb
5   eee   4               ddd

有人可以帮我查询吗

谢谢

试试这个语法:

SELECT
    t1.ID,
    t1.Name,
    t1.Referred_id,
    COALESCE(t2.Name, '') AS Referred_name
FROM yourTable t1
LEFT JOIN yourTable t2
    ON t1.Referred_id = t2.ID
ORDER BY
    t1.ID;

Demo

连接逻辑很可能是您遇到问题的地方。上面的连接条件只是说要为每个引用 ID 引入与同一 table 中的其他引用 ID 相对应的数据。请注意,我们在这里使用了左连接,因为第一条记录没有被任何人引用,我们仍然想包含它。

SELECT t1.*, t2.Name 'Referred_name' FROM Customer t1 LEFT JOIN Customer t2 ON t1.Referred_id = t2.ID