Mysql使用代理商ID从同一个表读取值

时间:2017-05-07 14:35:00

标签: mysql

我有下表:

+----+---------+--------+---------+----------+
| id | user    | pass   | nick    | reseller |
+----+---------+--------+---------+----------+
|  1 | admin   | 125854 | X-Admin | 2        |
|  2 | user256 | 123321 | User-256| NULL     |
+----+---------+--------+---------+----------+

我需要从查询中获取此信息:

+----+---------+--------+---------+----------+
| id | user    | pass   | nick    | reseller |
+----+---------+--------+---------+----------+
|  1 | admin   | 125854 | X-Admin | User-256 |
|  2 | user256 | 123321 | User-256| NULL     |
+----+---------+--------+---------+----------+

因此我可以在我的ajax html网页中使用tbl.reseller ...我尝试使用此查询:

SELECT g1.nick
FROM resellers g1, resellers g2
INNER JOIN g2 ON g2.reseller=g1.id;

但是我得到了这个错误:

ERROR 1066 (42000): Not unique table/alias: 'g2'

我需要获得经销商价值并使用id get nick在输出中显示。在此示例中,我获取id 1经销商值2表中的id 2是什么,读取值id 2为nick列并显示它作为经销商。

你可以看到我需要从同一个表中输入INNER JOIN所以我读到我需要使用别名(g1 g2或AS?)但我不知道该怎么做。

感谢。

1 个答案:

答案 0 :(得分:0)

您可以尝试以下查询:

SELECT
    r1.id,
    r1.user,
    r1.pass,
    r1.nick,
    r2.user
FROM resellers r1
INNER JOIN resellers r2
    ON r1.reseller = r2.id

至于您当前查询错误的原因,您实际上是自己加入两次。以下代表单个自联接:

SELECT g1.nick
FROM resellers g1, resellers g2

这是一种旧式的隐式连接,它已被我在答案中使用的显式连接语法所取代。然后,您执行第二次自我加入:

INNER JOIN g2 ON g2.reseller=g1.id;

非唯一别名错误的原因是MySQL无法确定您所引用的两个连接表中的哪一个。