【问题标题】:Select each row and insert into another table选择每一行并插入另一个表
【发布时间】:2016-06-30 17:25:03
【问题描述】:

乍一看,这是我的查询

 INSERT INTO T2 
 SELECT T1.*,  T3.DATETIME, T3.STATEID
 FROM T1 WHERE T3.DATETIME BETWEEN '01-NOV-15' AND SYSDATE
 LEFT OUTER JOIN T3
 ON (T1.DOCID =  T3.DOCID);

T1 AND T2 在列数方面几乎相同;只有T2 有两列额外(CREATIONDATE,STATEID)

T1 的每一行都需要插入T2 + 两个额外的列CREATIONDATE & STATEID,它们仅在T3 中可用。 T1 和 'T3' 共享 DOCID 可以用来加入他们...

仍有一些问题,非常感谢您的帮助..

遇到错误

Error report -
SQL Error: ORA-00933: SQL command not properly ended
00933. 00000 -  "SQL command not properly ended"

【问题讨论】:

  • 你能更好地解释这个问题吗?您是否遇到错误或意外结果?

标签: oracle select join foreach insert


【解决方案1】:

WHERE 子句位置的问题,它必须在连接表列表之后:

INSERT INTO T2 
 SELECT T1.*,  T3.DATETIME, T3.STATEID
 FROM T1 
 LEFT OUTER JOIN T3
   ON (T1.DOCID =  T3.DOCID)
WHERE T3.DATETIME BETWEEN '01-NOV-15' AND SYSDATE;

【讨论】:

    【解决方案2】:

    你的语法不正确,join之后的位置:

     INSERT INTO T2 
     SELECT T1.*,  T3.DATETIME, T3.STATEID
     FROM T1 
    LEFT OUTER JOIN T3
    ON (T1.DOCID =  T3.DOCID)
    WHERE T3.DATETIME BETWEEN '01-NOV-15' AND SYSDATE
    

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-05-15
    • 2014-02-17
    • 1970-01-01
    相关资源
    最近更新 更多