使用SELECT获取id,然后从另一行

时间:2016-09-07 17:44:37

标签: mysql

我有一个像这样的表格设置:

id (INT) | display_name (VARCHAR) | referral (INT)

引荐是推介用户的ID。有没有办法可以提取引荐ID,然后用它来获取引用成员的display_name?或者两个单独的电话更容易吗?

2 个答案:

答案 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 是您的表名。