错误1052(23000):where子句中的'course_id'列不明确

时间:2013-08-19 20:33:21

标签: mysql

我是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

任何人都知道为什么?

由于

5 个答案:

答案 0 :(得分:6)

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

写下sm.course_id或sce.course_id,它会起作用。

答案 1 :(得分:3)

您正在加入多个表,其中至少有两个表具有列course_id。在您的语句and course_id = 'MyCourse'中,您没有指定哪个表具有course_id。

答案 2 :(得分:2)

student_courseenrollment和其他一个表都有一个名为course_id的列。使用表别名,例如au.course_id

答案 3 :(得分:2)

你需要使用表的别名和其中的课程id列

喜欢sce.course_id

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

答案 4 :(得分:0)

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

select * from table1,table2 where table1.userId='any id';