• 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  中间加逗号

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

  • 相关阅读:
    Altium Designer_Gerber文件/生产文件导出
    Python爬虫讲解(超详细)
    渲染引擎什么情况下才会为特定的节点创建新的图层
    java毕业设计郑财校园新闻管理系统Mybatis+系统+数据库+调试部署
    N32学习笔记2-GPIO使用和关闭JTAG打开SW调试模式
    Web前端:一些优化React Native应用程序性能的有用技巧
    HDLbits: ece241 2014 q4
    MeterSphere压测,出现HttpHostConnectException
    活动预告|“构建新安全格局”专家研讨会即将开幕
    从零开始的深度学习之旅(1)
  • 原文地址:https://blog.csdn.net/just_learing/article/details/125596241