我見過的甲骨文提到與第幾次在這裏混疊像這樣的子查詢:SQL Server是否支持類似Oracle的WITH子句?
WITH myData AS (SELECT id, text FROM SomeTable)
SELECT myData from SomeOtherTable
是否的SQL Server支持該版本的任何?如果不是,他們有沒有特別的原因?性能?不正確使用的可能性?
我見過的甲骨文提到與第幾次在這裏混疊像這樣的子查詢:SQL Server是否支持類似Oracle的WITH子句?
WITH myData AS (SELECT id, text FROM SomeTable)
SELECT myData from SomeOtherTable
是否的SQL Server支持該版本的任何?如果不是,他們有沒有特別的原因?性能?不正確使用的可能性?
SQL Server 2005及更高版本。
我想補充一點,你可以疊加這些效果好:
WITH A AS (
SELECT * FROM X
), B AS (
SELECT * FROM A
), C AS (
SELECT * FROM B
)
SELECT * FROM C
你甚至可以這樣做:
WITH A AS (
), B AS (
)
SELECT * FROM A INNER JOIN B ON whatever
也要注意,使用必須在一份聲明中第一個關鍵字,那麼你經常看到它寫成:
;WITH A AS (
)
基本上終止前面的語句(分號是k在T-SQL中可選)
酷,不知道這個! – harpo 2010-07-08 03:54:17
是的SQL2005和SQL2008都支持這個。他們被稱爲Common Table Expressions。
順便說一句,請注意,這不像「ANSI-SQL-like」那樣「像Oracle一樣」。 – 2010-07-08 04:00:43
真的嗎?你會碰巧知道在哪裏可以找到實際的ANSI-SQL標準的副本嗎? – 2010-07-10 19:06:21