2

我是 MySQL 新手,所以如果我的问题缺少信息,请告诉我,

我有一个工作正常的查询:

select au.email, sm.created, sm.grade, sm.max_grade
from auth_user au, courseware_studentmodule sm
where sm.student_id = au.id
and course_id = 'MyCourse'
and sm.module_type = 'problem';

但是当我想从不同的表中添加另一列时:

select au.email, sm.created, sce.created , sm.grade, sm.max_grade
from auth_user au, courseware_studentmodule sm,  student_courseenrollment sce
where sm.student_id = au.id and sm.student_id = sce.id
and course_id = 'MyCourse'
and sm.module_type = 'problem';

我收到这个错误

ERROR 1052 (23000): Column 'course_id' in where clause is ambiguous

有谁知道为什么?

谢谢

4

5 回答 5

7

这是因为该列course_id存在于两个以上的表中。

sm.course_idsce.course_id,它会工作。

于 2013-08-19T20:41:04.823 回答
3

您要连接多个表,其中至少有两个表具有 列course_id。在您的声明中and course_id = 'MyCourse',您没有指定哪个表具有 course_id。

于 2013-08-19T20:35:16.883 回答
2

student_courseenrollment并且您的其他表之一都有一个名为course_id. 使用表别名,例如au.course_id.

于 2013-08-19T20:35:27.980 回答
2

您需要使用表的别名,其中包含 course id 列

sce.course_id

如下面评论中所述,这可能会更改您的结果,因此请使用 where 子句中使用的表的表名或该表的别名

于 2013-08-19T20:35:43.323 回答
0

您正在使用具有相同列名的两个不同表。如果要在任何查询中使用该列名,则应与表名一起使用,例如:

select * from table1,table2 where table1.userId='any id';
于 2015-03-06T09:34:52.407 回答