#1052 - 列'syear'在where子句中含糊
问题描述:
当我运行这个SQL时会出现这个错误。 #1052 - Column 'syear' in where clause is ambiguous
。任何一个给我答案。#1052 - 列'syear'在where子句中含糊
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
答
您的查询应该是这个样子:
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
被存储为一个数字而不是字符串。不要把字符串常量放在引号内。
答
您的表中有一列名为syear
的列,并且数据库引擎不知道选择哪一列。
添加的表名前
course_subjects.syear
此外,你不应该使用旧的隐式连接语法了。
+0
@juegen这也是工作 – loke2
这意味着FROM子句中的两个语句都有一个名为“syear”的列,因此,要使用该列,必须指定表名,就像您对其他列进行操作一样:尝试使用courses.syear或course_subjects。 SYEAR。 – Spock
人们不禁要问,为什么你在两张桌子上都有这样的专栏! – Strawberry