2

我正在使用 JSP 和 Servlet 开发 Web 应用程序(IDE:Eclipse,Container:Tomcat7.0,DB:Oracle 10)

我想在一个查询中从两个表中获取数据

询问:

query = "select * from PROTOCOL as a, ACTIONS as b where a.PROTOCOL_ID = b.PROTOCOL_ID";

但是在运行应用程序后,我得到以下异常:

java.sql.SQLException: ORA-00933: SQL command not properly ended

查询有什么问题吗?

4

3 回答 3

12

您遇到的问题是关键字AS。这用于SELECT部分中的列。FROM它对于您指定表的位置无效。

你有

select * from PROTOCOL as a, ACTIONS as b

应该

select * from PROTOCOL a, ACTIONS b...

来自Oracle 文档

t_alias

指定相关名称,它是用于评估查询的表、视图、物化视图或子查询的别名。如果选择列表引用任何对象类型属性或对象类型方法,则需要此别名。关联名称最常用于关联查询。整个查询中对表、视图或实体化视图的其他引用必须引用此别名。

例子:

SELECT select_list 
    FROM table1 t_alias1 
    WHERE expr operator 
        (SELECT column_list 
            FROM table2 t_alias2 
            WHERE t_alias1.column 
               operator t_alias2.column); 
于 2013-01-02T12:02:34.533 回答
2

错误的别名语法。尝试以下操作:

query = "select * from PROTOCOL a,ACTIONS b where a.PROTOCOL_ID = b.PROTOCOL_ID";
于 2013-01-02T12:05:16.247 回答
0

任何人都可能需要它的评论.. PostgreSQL 似乎接受 FROM/JOIN 旁边的 AS

于 2013-11-15T10:09:28.490 回答