我有一个像这样的表格设置:
id (INT) | display_name (VARCHAR) | referral (INT)
引荐是推介用户的ID。有没有办法可以提取引荐ID,然后用它来获取引用成员的display_name?或者两个单独的电话更容易吗?
答案 0 :(得分:1)
基本上,你需要做的就是自己加入你的桌子。
SELECT child.*, parent.display_name AS referral_name
FROM users AS child
JOIN users AS parent ON child.referral = parent.id
WHERE child.id = 2
将users表作为子项别名,然后连接到同一个表(别名为parent)。
+----+--------------+----------+---------------+
| id | display_name | referral | referral_name |
+----+--------------+----------+---------------+
| 2 | Jim | 1 | Tim |
+----+--------------+----------+---------------+
如果引荐关系可能不存在,那么您可以改为使用LEFT JOIN:
SELECT child.*, parent.display_name AS referral_name
FROM users AS child
LEFT JOIN users AS parent ON child.referral = parent.id
+----+--------------+----------+---------------+
| id | display_name | referral | referral_name |
+----+--------------+----------+---------------+
| 1 | Tim | NULL | NULL |
| 2 | Sam | 1 | Tim |
| 3 | Kimberly | 1 | Tim |
+----+--------------+----------+---------------+
答案 1 :(得分:0)
以下查询将通过加入 本身来执行您想要的操作。
select t2.display_name from table_name t1 join table_name t2 on t1.referral=t2.id
其中 table_name 是您的表名。