回答
在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