1
這裏上是查詢:嵌套SQL SELECT語句失敗SQL Server 2000上,確定SQL Server 2005的
INSERT INTO @TempTable
SELECT
UserID, Name,
Address1 =
(SELECT TOP 1 [Address] FROM
(SELECT TOP 1 [Address] FROM [UserAddress] ua
INNER JOIN UserAddressOrder uo ON ua.UserID = uo.UserID
WHERE ua.UserID = u.UserID
ORDER BY uo.AddressOrder ASC) q
ORDER BY AddressOrder DESC),
Address2 =
(SELECT TOP 1 [Address] FROM
(SELECT TOP 2 [Address] FROM [UserAddress] ua
INNER JOIN UserAddressOrder uo ON ua.UserID = uo.UserID
WHERE ua.UserID = u.UserID
ORDER BY uo.AddressOrder ASC) q
ORDER BY AddressOrder DESC)
FROM
User u
在這種情況下,用戶有多個地址的定義,與整型字段指定首選順序。 「地址2」(第二個首選地址)嘗試取前兩個首選地址,按降序排列,然後從結果中取第一個地址。你可能會說,只要使用一個子查詢,在Order域中使用「2」做記錄的SELECT,但Order值不是連續的。
怎麼可以這樣被改寫,以符合SQL 2000的限制?
非常讚賞。
[編輯]
當我與實際的用戶ID的WHERE
子句中替換u.UserID
,SQL Server 2000不抱怨。看來,SQL 2000不能處理將內部引用(u.UserID)鏈接到外部表(User u)。
同樣,拋出的錯誤是:
Msg 8624, Level 16, State 16, Line 24
Internal SQL Server error.
你跟SQL 2000得到什麼錯誤? – SqlACID 2010-05-13 00:17:12
錯誤是: 消息8624,級別16,國16條,第24行 內部SQL Server錯誤。 – Jay 2010-05-13 16:02:07