2012-02-13 48 views
2

我创建了两个表,uview和vview。联合查询不起作用,导致ORA-00904错误

CREATE TABLE Uview 
( USERID CHAR(6) NOT NULL ENABLE, 
pageID varCHAR2(50) NOT NULL ENABLE, 
VISIT_TIME TIMESTAMP (6) NOT NULL ENABLE, 
view_TIME TIMESTAMP (6) NOT NULL ENABLE, 
fview_TIME TIMESTAMP (6) NOT NULL ENABLE, 
entry varCHAR2(50) NOT NULL ENABLE, 
exit varCHAR2(50) NOT NULL ENABLE, 
PRIMARY KEY (USERID, VISIT_TIME,viewtime) ENABLE) 


CREATE TABLE vview 
( VISITORID CHAR(8) NOT NULL ENABLE, 
    pageID varCHAR2(50) NOT NULL ENABLE, 
VISIT_TIME TIMESTAMP (6) NOT NULL ENABLE, 
view_TIME TIMESTAMP (6) NOT NULL ENABLE, 
fview_TIME TIMESTAMP (6) NOT NULL ENABLE, 
entry varCHAR2(50) NOT NULL ENABLE, 
exit varCHAR2(50) NOT NULL ENABLE, 
PRIMARY KEY (visitorID, VISIT_TIME,view_time) ENABLE) 

现在我想用union来查询这两个表。

select userID,pageID,visit_time,view_time,fview_time,exit,entry 
    from uview 
union 
select visitorid,pageID,visit_time,view_time,fview_time,exit,entry 
    from vview; 

但是,ORA-00904有一个错误:“ENTRY”:这是无效的标识符。 即使我从查询ORA-00904删除条目:“退出”:无效的标识符结果以及。这对我来说似乎很奇怪。请告诉我什么是错的。谢谢 。

+0

似乎..条目n退出是关键词吗? – 2012-02-13 05:10:39

回答

2

Entry是Oracle中的保留字:http://docs.oracle.com/cd/B19306_01/em.102/b40103/app_oracle_reserved_words.htm。你必须使用双引号逃脱它:

SELECT .... , "entry" 
FROM uview 
etc... 
+0

谢谢。但现在我已经键入 从uview union select select userID,pageID,visit_time,view_time,fview_time,'entry' 从vview中选择visitorid,pageID,visit_time,view_time,fview_time,'entry'; 结果显示ORA-00911:无效字符.... – jannyeu 2012-02-13 05:17:17

+0

啊,doh。对..甲骨文。反引号的MySQL。甲骨文希望双引号:http://stackoverflow.com/questions/1162381/how-do-i-escape-a-reserved-word-in-oracle我会修复答案。 – 2012-02-13 05:18:38

+0

我正在使用Oracle 11g。这与这种错误有什么关系? 还有如何退出?因为如果我只在我的查询中包含退出,那么它也会显示ORA-00904 – jannyeu 2012-02-13 05:19:08