这个MySQL查询失败了,我只是不知道为什么。如果您需要更多的信息,请告诉我。
新查询和新错误
select *
from
(select
classId as `Class ID`, mjla_db.StudentRecordTable2.studentId as `Student ID`, quizId as `Quiz ID`, quizGrade as `Quiz Grade`, mjla_db.StudentTable2.lastName, mjla_db.StudentTable2.firstName
from mjla_db.StudentRecordTable2, mjla_db.StudentTable2
where (mjla_db.StudentRecordTable2.studentId=mjla_db.StudentTable2.studentId))
as A
where classId
in (select mjla_db.ClassTable2.classId
from mjla_db.ClassTable2
where mjla_db.ClassTable2.teacherId='T1');
ERROR 1054 (42S22): Unknown column 'classId' in 'IN/ALL/ANY subquery'select *
from
(select
classId as 'Class ID',
studentId as 'Student ID',
quizId as 'Quiz ID',
quizGrade as 'Quiz Grade',
mjla_db.StudentTable2.lastName,
mjla_db.StudentTable2.firstName
from
mjla_db.StudentRecordTable2,
mjla_db.StudentTable2
where
(mjla_db.StudentRecordTable2.studentId = mjla_db.StudentTable2.studentId)
) as A
where
A.classId in
(select
mjla_db.ClassTable2.classId
from
mjla_db.ClassTable2
where
mjla_db.ClassTable2.teacherId='T1'
);describe StudentRecordTable2;
+-----------+-------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-----------+-------------+------+-----+---------+-------+
| classId | varchar(20) | NO | MUL | NULL | |
| studentId | varchar(20) | NO | MUL | NULL | |
| quizGrade | tinyint(4) | YES | | NULL | |
| quizId | int(11) | NO | MUL | NULL | |
+-----------+-------------+------+-----+---------+-------+
4 rows in set (0.00 sec)describe ClassTable2;
+---------------+-------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+---------------+-------------+------+-----+---------+-------+
| classId | varchar(20) | NO | PRI | NULL | |
| className | varchar(10) | NO | | NULL | |
| classSection | varchar(5) | NO | | NULL | |
| classSemester | varchar(2) | NO | | NULL | |
| classYear | varchar(4) | NO | | NULL | |
| teacherId | varchar(20) | NO | | NULL | |
+---------------+-------------+------+-----+---------+-------+
6 rows in set (0.00 sec)describe StudentTable2;
+-----------------+-------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-----------------+-------------+------+-----+---------+-------+
| studentId | varchar(20) | NO | PRI | NULL | |
| lastName | varchar(45) | NO | | NULL | |
| firstName | varchar(45) | NO | | NULL | |
| studentPassword | varchar(32) | NO | | NULL | |
+-----------------+-------------+------+-----+---------+-------+
4 rows in set (0.00 sec)发布于 2011-10-22 14:26:48
我认为,您需要使用bactick / backquote (`)字符来引用您的列名,而不是单引号字符(')。
此外,在第一个子查询中将classId混叠为Class ID,但在外部where子句中引用A.classId。
发布于 2011-10-22 14:24:24
由于您同时从StudentRecordTable2和StudentTable2中进行选择,所以不能只执行SELECT studentId,因为该列名在两个表中都使用,而mysql不知道您想要哪一个。您需要指定您想要的表的studentId,方法是在表名前加上前缀,就像在查询的后面所做的那样。例如,mjla_db.StudentTable2.studentId。
发布于 2011-10-22 14:19:33
select * from (select ...)语法不正确。select * from后面必须跟着表名。我认为您只需要去掉第一个,只需使用括号中的查询即可。
我不确定您是否可以在与AS一起使用的标识符中使用空格。
https://stackoverflow.com/questions/7860165
复制相似问题