我是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
任何人都知道为什么?
由于
答案 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';