自助加入的工作原理
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;
连接逻辑很可能是您遇到问题的地方。上面的连接条件只是说要为每个引用 ID 引入与同一 table 中的其他引用 ID 相对应的数据。请注意,我们在这里使用了左连接,因为第一条记录没有被任何人引用,我们仍然想包含它。
SELECT t1.*, t2.Name 'Referred_name' FROM Customer t1 LEFT JOIN Customer t2 ON t1.Referred_id = t2.ID
我有一个客户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;
连接逻辑很可能是您遇到问题的地方。上面的连接条件只是说要为每个引用 ID 引入与同一 table 中的其他引用 ID 相对应的数据。请注意,我们在这里使用了左连接,因为第一条记录没有被任何人引用,我们仍然想包含它。
SELECT t1.*, t2.Name 'Referred_name' FROM Customer t1 LEFT JOIN Customer t2 ON t1.Referred_id = t2.ID