• Oracle with as ORA-00903: invalid table name 多表报错


    今天遇到了一个问题 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         04

    CNAME      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  去掉之后成功

    1. SQL> ;
    2. 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),
    3. 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)
    4. 3* select * from t,sss
    5. 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),
    6. 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)
    7. 2 3 select * from t,sss;
    8. CNAME ABCD SID CNAME ABCD SID
    9. ---------- ---------- ---------- ---------- ---------- ----------
    10. 英语 03 02 语文 01 01
    11. 英语 03 02 数学 02 01

     

    注意点1 多表 with as  去掉后面的

     

    注意点2 多表 with as  中间加逗号

    数据就成功查出来了!!!!!!!!!!!!! 

  • 相关阅读:
    EL 表达式
    LeetCode //C - 918. Maximum Sum Circular Subarray
    Vue项目中app.js过大,导致web初始化加载过慢问题
    智慧城市-疫情流调系列4-Prompt-UIE,生成式通用信息抽取-paddlenlp
    新瓶装旧酒,Ares 银行木马新增 Qakbot DGA 算法
    策略引擎Kyverno
    Scala----For循环---02
    异步任务-线程池配置
    RemObjects Suite Subscription for Delphi
    Ubuntu20.04安装c++版本的OpenCV
  • 原文地址:https://blog.csdn.net/just_learing/article/details/125596241