【发布时间】:2022-01-13 11:59:15
【问题描述】:
我有一个在 oracle 11g 中使用的简单 SQL 查询
select something
from sc
where sc.column satisfies something
但我不能在 where 复合中引用 SC,任何人都可以帮助解释这一点,在此先感谢。
---第二次编辑:我在 oracle 19c 中测试了 sql 命令,但在 11g 中它不起作用。
表格内容
create table sc(
sno varchar2(10),
cno varchar2(10),
score number(4,2),
constraint pk_sc primary key (sno,cno)
);
示例数据
insert into sc values ('s001','c001',78.9);
insert into sc values ('s002','c001',80.9);
insert into sc values ('s003','c001',81.9);
insert into sc values ('s004','c001',60.9);
insert into sc values ('s001','c002',82.9);
insert into sc values ('s002','c002',72.9);
insert into sc values ('s003','c002',81.9);
insert into sc values ('s001','c003','59');
sql命令
SELECT SNO
FROM SC A
WHERE 0 = (SELECT COUNT(*)
FROM
(SELECT B.CNO
FROM SC B
WHERE B.SNO = 's001'
MINUS
SELECT C.CNO
FROM SC C
WHERE A.SNO = C.SNO) --this is the error location, oracle reports invalid identifier A.
);
【问题讨论】:
-
你的 rdbms 是什么?
-
您能提供一些示例数据并期待结果吗?
-
A 在您的子选择之外定义了一个无法从那里访问的 id
-
我用一个虚拟 SC 表运行它,它工作。请显示完整的错误信息和表定义。
-
@D-Shih 数据库是oracle 11g