今天遇到了一个问题 with as 多次使用会报错!!
网上查了资料好多都不行!
order是保留字,如果不小心用了order这个单词就只能加上双引号 "order" 操作
题目 是这个
第一次我尝试单表使用with as 正常运行!!
with sss as (select cc.cname,cc.cid abcd,ss.sid from course cc,sc scc,student ss where cc.cid=scc.cid and scc.sid=ss.sid and ss.sid=01)
2 select * from sss
3 ;CNAME ABCD SID
---------- ---------- ----------
数学 02 01
语文 01 01
英语 03 01
with t as (select cc.cname,cc.cid abcd,ss.sid from course cc,sc scc,student ss where cc.cid=scc.cid and scc.sid=ss.sid and ss.sid!=01)
2 select * from t;CNAME ABCD SID
---------- ---------- ----------
英语 03 02
数学 02 02
语文 01 02
体育 04 03
英语 03 03
数学 02 03
语文 01 03
体育 04 04
英语 03 04
体育 04 04
语文 01 04CNAME ABCD SID
---------- ---------- ----------
数学 02 05
英语 03 05
英语 03 06
语文 01 06
体育 04 07
数学 02 07
英语 03 07
但我想要 2表联查时 出现以下错误
with sss as (select cc.cname,cc.cid abcd,ss.sid from course cc,sc scc,student ss where cc.cid=scc.cid and scc.sid=ss.sid and ss.sid=01),
with t as (select cc.cname,cc.cid abcd,ss.sid from course cc,sc scc,student ss where cc.cid=scc.cid and scc.sid=ss.sid and ss.sid!=01)
2 3 select * from t,sss;
with t as (select cc.cname,cc.cid abcd,ss.sid from course cc,sc scc,student ss where cc.cid=scc.cid and scc.sid=ss.sid and ss.sid!=01)
*
ERROR at line 2:
ORA-00903: invalid table name
翻译很清楚 无效的表名 !!(表名明明是对的怎么就无效了????)
后来发现多了个 wtih 去掉之后成功
SQL> ;
1 with sss as (select cc.cname,cc.cid abcd,ss.sid from course cc,sc scc,student ss where cc.cid=scc.cid and scc.sid=ss.sid and ss.sid=01),
2 with t as (select cc.cname,cc.cid abcd,ss.sid from course cc,sc scc,student ss where cc.cid=scc.cid and scc.sid=ss.sid and ss.sid!=01)
3* select * from t,sss
with sss as (select cc.cname,cc.cid abcd,ss.sid from course cc,sc scc,student ss where cc.cid=scc.cid and scc.sid=ss.sid and ss.sid=01),
t as (select cc.cname,cc.cid abcd,ss.sid from course cc,sc scc,student ss where cc.cid=scc.cid and scc.sid=ss.sid and ss.sid!=01)
2 3 select * from t,sss;
CNAME ABCD SID CNAME ABCD SID
---------- ---------- ---------- ---------- ---------- ----------
英语 03 02 语文 01 01
英语 03 02 数学 02 01
注意点1 多表 with as 去掉后面的
注意点2 多表 with as 中间加逗号
数据就成功查出来了!!!!!!!!!!!!!