#1052 - where子句中的列'syear'是不明确的

时间:2017-05-05 12:29:34

标签: mysql sql

当我运行此SQL时会出现此错误。 #1052 - Column 'syear' in where clause is ambiguous。任何人都给我回答。

SELECT c.course_id
     , c.TITLE
     , c.SHORT_NAME
     , cs.overallmark 
  FROM courses c
     , course_subjects cs
 WHERE syear = '2010' 
   AND c.subject_id = cs.subject_id 
 ORDER 
    BY c.course_id
     , c.TITLE
     , c.SHORT_NAME
     , cs.overallmark

2 个答案:

答案 0 :(得分:3)

您的查询应如下所示:

SELECT c.course_id, c.TITLE, c.SHORT_NAME, cs.overallmark 
FROM courses c JOIN
     course_subjects cs
     ON c.subject_id = cs.subject_id 
WHERE c.syear = 2010 
ORDER BY c.course_id, c.TITLE, c.SHORT_NAME, cs.overallmark;

注意:

  • 从不FROM子句中使用逗号。 始终使用正确的JOIN语法。
  • 限定所有列名称,尤其是当查询引用多个表时。
  • 我假设syear存储为数字而不是字符串。不要在字符串常量周围加上引号。

答案 1 :(得分:1)

您的两个表中都有一个名为syear的列,数据库引擎不知道要选哪一个。

在其前面添加表名

course_subjects.syear

除此之外,您不应再使用旧的隐式连接语法。