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

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

  • 相关阅读:
    Linux5.x启动过程分析
    5G 时代音视频开发前景怎么样?音视频开发需要掌握哪些技术?
    vue 获取上一周和获取下一周的日期时间
    Anaconda平台下从0到1安装TensorFlow环境详细教程(Windows10+Python)
    OVS-DPDK/虚拟化学习
    美团2024届秋招笔试第一场编程[汇总](上课口胡一下)
    经济利益是黑客攻击主要驱动力
    基于量子计算的md5密码哈希破解方法
    Linux之shell文本搜索工具grep
    【iptables 实战】06 iptables网络防火墙实验
  • 原文地址:https://blog.csdn.net/just_learing/article/details/125596241