为什么这个where语句不起作用?

时间:2013-04-26 00:22:48

标签: sql

下面是完整的排队,当我删除grade =“a”时它工作正常,为什么这会导致它出错?

我收到错误ORA-00904:“A”:无效的标识符

select count(grade), dw_course_sect.roomID 
from dw_course_facts, dw_course_sect 
where (dw_course_facts.coursekey = dw_course_sect.coursekey) and 
      (dw_course_facts.grade = "A") 
group by dw_course_sect.roomID;

1 个答案:

答案 0 :(得分:0)

Oracle(以及大多数其他数据库)使用双引号作为SQL中名称的分隔符。如果您的列名称包含空格,例如Column Name,那么您可以编写select "Column Name" . . .

当您编写"A"时,Oracle正在寻找具有该名称的命名对象 - 名为“A”的列。没有。

你想要单引号。但是,您还应该使用标准连接语法。查询应如下所示:

select count(grade), dw_course_sect.roomID
from dw_course_fact join
     dw_course_sect
     on dw_course_facts.coursekey = dw_course_sect.coursekey
where dw_course_facts.grade = 'A'
group by dw_course_sect.roomID;