在ORACLE中插入select
我尝试使用Oracle数据库编写以下具有左联接的插入选择查询:在ORACLE中插入select,oracle,Oracle,我尝试使用Oracle数据库编写以下具有左联接的插入选择查询: 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 O
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 ;
这会产生以下错误:
ORA-00904 : "NUM_ROWS" : invalid identifier
一个表的DDL为:
CREATE TABLE tables (name_tables VARCHAR2(60)
,tuple VARCHAR2(50),
taille_tuple VARCHAR2(50))
问题在于语句的插入部分:
insert into tables (TABLE_NAME,DATA_LENGTH,NUM_ROWS)
括号中的子句指定插入表中的目标列。您的版本使用查询表中列的名称,这些名称与表中的列不同。这个子句是可选的:我们只需要在不填充所有列时指定目标列。但是如果它在那里,名字需要匹配,所以
insert into tables (name_tables,tuple,taille_tuple)
Oracle数据库和mysql有什么区别?您的表创建语句显示它没有名为num\u rows
的列。或者插入中的任何其他列名。你刚才误解了插入语法吗?戴着那顶帽子,有一刻你看起来像比利·乔尔的一首歌中的一句话:“你手里拿着多姆·佩里尼翁,鼻子上挂着月亮”…:-)@BobJarvis-现在我是“我们没有点火”: