这是我试图执行的MySQL查询。它一直失败,错误: 字段列表中的未知列'staff_tbl.mainrank'。这怎么可能?
DROP TEMPORARY TABLE IF EXISTS `staff_tbl`;
CREATE TEMPORARY TABLE staff_tbl(childrank TEXT, mainrank TEXT);
INSERT INTO staff_tbl
SELECT permissions_inheritance.child, permissions_inheritance.parent
FROM permissions_inheritance;
SELECT authme.username, permissions_inheritance.child,
permissions_inheritance.parent, staff_tbl.mainrank
FROM authme
INNER JOIN permissions_inheritance ON authme.username = permissions_inheritance.child
INNER JOIN staff_tbl alies2 ON staff_tbl.mainrank = permissions_inheritance.parent;
DROP TABLE `staff_tbl`;
如果你能帮助我,我将不胜感激。我把头发拉了一下。所以你们是我最后的希望。我还是个新手:)
答案 0 :(得分:1)
在上一个SELECT
中,您最后一次加入错误。您与staff_tbl
建立联接并为其指定别名(alies2
)。您必须在后面的语句中使用该别名(alies2.mainrank = permissions_inheritance.parent
而不是staff_tbl.mainrank = permissions_inheritance.parent
),而您没有。
尝试写下您的上一个SELECT
:
SELECT a.username, p.child, p.parent, s.mainrank
FROM authme a
INNER JOIN permissions_inheritance p ON a.username = p.child
INNER JOIN staff_tbl s ON s.mainrank = p.parent;
我修正了上面的内容。我还为每个表设置了一个别名,以使查询更短,因此更具可读性。
答案 1 :(得分:0)
MySQL允许创建两个具有相同名称的表,如果其中一个表是临时。
在您尝试加入临时表的查询中,但MySQL加入了另一个不包含staff_tbl
字段的非临时mainrank
表。
所以,首先删除这个非临时表。