回答
在SQL服務器是允許的,但內部的選擇必須被賦予一個名稱,如:
SELECT *
FROM (
SELECT *
FROM MyTable
) m
當一個名稱沒有提供它會拋出一個不正確的語法錯誤ñ耳朵')'消息。
至少有兩種方法可以做到這一點,但你可能會尋找一個Common Table Expression (CTE),在SQL Server 2005
介紹,從上面的鏈接:
USE AdventureWorks;
GO
WITH Sales_CTE (SalesPersonID, NumberOfOrders, MaxDate)
AS
(
SELECT SalesPersonID, COUNT(*), MAX(OrderDate)
FROM Sales.SalesOrderHeader
GROUP BY SalesPersonID
)
SELECT E.EmployeeID, OS.NumberOfOrders, OS.MaxDate,
E.ManagerID, OM.NumberOfOrders, OM.MaxDate
FROM HumanResources.Employee AS E
JOIN Sales_CTE AS OS
ON E.EmployeeID = OS.SalesPersonID
LEFT OUTER JOIN Sales_CTE AS OM
ON E.ManagerID = OM.SalesPersonID
ORDER BY E.EmployeeID;
GO
或者,您可以創建一個View,這是一個可以通過名稱訪問的查詢的永久表形表示形式:
USE AdventureWorks ;
GO
IF OBJECT_ID ('hiredate_view', 'V') IS NOT NULL
DROP VIEW hiredate_view ;
GO
CREATE VIEW hiredate_view
AS
SELECT c.FirstName, c.LastName, e.EmployeeID, e.HireDate
FROM HumanResources.Employee e JOIN Person.Contact c on e.ContactID = c.ContactID ;
GO
SELECT * FROM hiredate_view
-1:你不需要一個視圖或CTE來做到這一點,這是一個標準的子查詢。 – RedFilter 2010-03-11 18:07:54
@OrbMan,OP的代碼不使用子查詢。一個子查詢是一個SELECT查詢,它返回一個單一值,並且嵌套在SELECT,INSERT,UPDATE或DELETE語句內或另一個子查詢中。子查詢可以用在任何允許表達式的地方.OP使用派生表,有時稱爲內聯視圖。 – 2010-03-23 17:29:41
@KM - 你是對的。我懶洋洋地使用了名稱*子查詢*作爲括號中的任何查詢的習慣,但派生表是適當的術語,以及我的意思。 – RedFilter 2010-03-23 18:01:47
如果添加表別名它應該工作:
SELECT *
FROM (
SELECT *
FROM MyTable
) as A
+1:看起來你贏了28秒。 – RedFilter 2010-03-11 18:09:24
你缺少的子查詢 一個「別名」(我加了一個別名「X」)
SELECT *
FROM (
SELECT *
FROM MyTable
) X
- 1. 我可以用什麼來代替#sql表中的sql函數
- 2. 在SQL Server SELECT - 替代子查詢
- 3. 加速我的查詢使用sql server 2008.交叉替代
- 4. SQL查詢來尋找替代項目
- 5. 使用聯盟的SQL Server查詢 - 任何好的替代可能?
- 6. 替代使用SQL IN在此查詢
- 7. 加入以下SQL查詢的替代
- 8. 使用VBA查詢Excel中的SQL Server表格
- 9. 從lambda表達式生成sql server查詢的替代方法
- 10. 用SQL Server中的查詢結果替換表的內容
- 11. SQL查詢使用SQL Server
- 12. 使用查詢導出SQL Server 2008表格到Excel工作表
- 13. 什麼可能的方法來替換SQL SERVER中的動態查詢
- 14. SQL在查詢中用NULL代替NULL
- 15. SQL Server - 在select *查詢中替換()()
- 16. 我可以在SQL Server查詢使用這種類型的
- 17. 使用查詢的SQL查詢來查詢不同的表
- 18. 使用SQL Server CE創建表查詢
- 19. 使用SQL連接和子查詢來查詢R中的兩個表格
- 20. SQL Server中的替代項
- 21. 查詢使用SQL Server 2005中的查詢傳遞參數來調用SQL代理作業?
- 22. 來自4個表格的sql查詢
- 23. 替代SQL SERVER 2008上的ROW_NUMBER()以在查詢中添加相關字段
- 24. SQL Server中的XML查詢格式化
- 25. 使用代碼來創建SQL查詢
- 26. 不能使用SQL語句來創建表,但可以用它來查詢
- 27. SQL Server的查詢性能查詢表
- 28. 使用SQL Server查詢SSRS
- 29. 使用SQL Server查詢CosmosDB
- 30. 查詢使用SQL Server 2008
如果您發佈代碼或XML - **請始終突出顯示有問題的行,然後單擊編輯器工具欄上的「代碼」按鈕(101 010)!這使得它閱讀起來更容易,更好! – 2010-03-11 16:45:36