编译错误说“mm”和“cc”是无效标识符!oracle 10g sql与子句编译错误
with m as (
select instructor,
count(*) as c
from class
group by instructor),
mm as (
select max(m.c) as cc
from m)
select m.instructor
from m
where m.c = mm.cc;
编译错误说“mm”和“cc”是无效标识符!oracle 10g sql与子句编译错误
with m as (
select instructor,
count(*) as c
from class
group by instructor),
mm as (
select max(m.c) as cc
from m)
select m.instructor
from m
where m.c = mm.cc;
这个错误是因为mm
是子查询分解(AKA CTE)实例的名称,但你可以看到:
SELECT m.instructor
FROM m
WHERE m.c = mm.cc;
您还没有宣布mm
为连接到m
实例。使用:
WITH m AS (
SELECT instructor,
COUNT(*) as c
FROM CLASS
GROUP BY instructor),
mm AS (
SELECT MAX(m.c) as cc
FROM m)
SELECT m.instructor
FROM m
JOIN mm ON mm.cc = m.c
你很棒,我不知道什么是子查询保理(aka cte)实例! – Rn2dy 2010-10-25 20:06:52
@baboonWorksFine:在Oracle中'WITH'语法被称为“子查询因子分类”,在SQL Server中被称为“公用表表达式分解”(Common Query Table,简称AKA CTE)... – 2010-10-25 20:07:48
我认为你正在试图获得大部分课程的指导。
你能不能用
Select m.instructor FROM (select instructor, count(*) as c from class group by instructor order by 2 desc) m where rownum = 1
你想怎么处理关系 - 应该所有的关系显示? – 2010-10-25 20:10:56