我总是在MySql查询中收到错误:错误1054:字段列表中的未知列'列名'

时间:2012-06-18 12:22:22

标签: mysql sql database

这是我试图执行的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`;

如果你能帮助我,我将不胜感激。我把头发拉了一下。所以你们是我最后的希望。我还是个新手:)

2 个答案:

答案 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表。

所以,首先删除这个非临时表。