我有下表:
+----+---------+--------+---------+----------+
| 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?)但我不知道该怎么做。
感谢。
答案 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无法确定您所引用的两个连接表中的哪一个。