2015-07-13 69 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:你的意思是在**的情況** - 敏感,對不對? –