2015-07-13 66 views
0

我们有一个使用用户编写的SQL语句对数据编制索引的应用程序。我们将这些语句放在括号内,以便我们可以将该查询限制为某个标准。例如:Sybase SQL中的子查询

select * from (select F_Name from table_1)q where ID > 25 

虽然我们发现这种格式不能使用Sybase数据库。报告括号周围的语法错误。我试过在测试实例上玩耍,但一直未能找到实现这一结果的方法。我并不直接参与开发,而且我的SQL知识有限。我假设'q'是给subresult一个应用程序使用的别名。

Sybase是否有特定的语法?如果是这样,这个查询如何适应它?

在此先感谢。

+1

你用什么样的Sybase数据库的? ASE,IQ,任何地方? SYBASE是一个不是db系统的公司。您的查询适用于ASE。 – Parado

+0

在大多数情况下,您可以使用标准的'JOIN's而不是'FROM'子查询。 – JimmyB

+0

在其他情况下,您经常使用临时表('#tablename')来保存子查询的结果以用于下一个查询。 – JimmyB

回答

0

Sybase ASE区分大小写w.r.t.所有标识符和查询应当制定:

按@HannoBinder查询:

select id from ...是不一样的select ID from...所以一定要确保的情况。

还要确保Q查询返回列ID以便在where子句中使用。

如果表和列的名称都以大写字母下面的查询应工作:

select * from (select F_NAME, ID from TABLE_1) Q where ID > 25

+0

“SYBASE不支持小写的列名或表名” - Sybase ASE是区分大小写的w.r.t.所有标识符。 – JimmyB

+0

是的,改变 – KAD

+0

@HannoBinder:你的意思是在**的情况** - 敏感,对不对? –