我可以在T-SQL中的FROM中使用子查询吗?

时间:2010-02-24 05:09:35

标签: sql-server tsql

我可以编写如下的T-SQL

select *
 FROM (select * 
        from TableA 
       where FieldA = 1
       )
where FieldB > 10

这意味着我想从另一个查询的结果中查询。

3 个答案:

答案 0 :(得分:2)

你可以

select * 
FROM  ( select * from TableA where FieldA=1 ) sub
where FieldB > 10

请记住给子选择一个别名。

答案 1 :(得分:1)

是的,你可以这样做。

答案 2 :(得分:0)

如果要分离子查询,还可以使用公用表表达式(CTE)来帮助提高代码的可读性:

WITH Foo (FieldA, FieldB, FieldC) AS
(
    SELECT FieldA, FieldB, FieldC
    FROM TableA
    WHERE FieldA=1
)

SELECT *
FROM Foo
WHERE FieldB > 10

缺点是您必须明确命名列。然而,这实际上使你的代码更快,所以它并不总是坏事。