在ORACLE中插入选择

时间:2016-12-24 22:59:55

标签: oracle

我尝试使用Oracle数据库使用LEFT JOIN编写以下Insert select查询:

OnFragmentInteractionListener

这给出了以下错误:

 insert  into tables  (TABLE_NAME,DATA_LENGTH,NUM_ROWS) 
 SELECT user_tables.TABLE_NAME
         ,SUM(ALL_TAB_COLUMNS.DATA_LENGTH)
        ,user_tables.NUM_ROWS 
  FROM user_tables 
  LEFT JOIN ALL_TAB_COLUMNS 
      ON user_tables.TABLE_NAME = ALL_TAB_COLUMNS.TABLE_NAME 
  WHERE OWNER= 'SYSTEM' 
  AND (user_tables.TABLE_NAME ='TIMELEVEL' 
      OR user_tables.TABLE_NAME ='CHANLEVEL'
      OR user_tables.TABLE_NAME = 'CUSTLEVEL' 
     OR user_tables.TABLE_NAME = 'PRODLEVEL'
     OR user_tables.TABLE_NAME = 'ACTVARS' ) 
 GROUP BY user_tables.TABLE_NAME ;

一个表的DDL是:

ORA-00904 : "NUM_ROWS" : invalid identifier

1 个答案:

答案 0 :(得分:2)

问题是声明的INSERT部分:

insert  into tables  (TABLE_NAME,DATA_LENGTH,NUM_ROWS) 

括号中的子句指定插入表中的目标列。您的版本使用查询表中列的名称,这些列与tables中的列不同。该子句是可选的:我们只需要在不填充所有列时指定目标列。但如果它在那里,名称需要匹配,所以

insert  into tables  (name_tables,tuple,taille_tuple)