Могу ли я использовать подзапрос в FROM в T-SQL? - PullRequest
2 голосов
/ 24 февраля 2010

Могу ли я написать T-SQL, как показано ниже

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

, что означает, что я хочу запросить результаты другого запроса.

Ответы [ 3 ]

2 голосов
/ 24 февраля 2010

Да Вы можете

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

Только не забудьте дать псевдониму псевдоним.

1 голос
/ 24 февраля 2010

Да, вы можете сделать это.

0 голосов
/ 24 февраля 2010

Если вы хотите отделить свои подзапросы, вы также можете использовать Common Table Expressions (CTE), которые помогут сделать ваш код более читабельным:

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

SELECT *
FROM Foo
WHERE FieldB > 10

Недостатком является то, что вам придется явно назвать ваши столбцы. Однако это на самом деле делает ваш код быстрее, так что это не всегда плохо.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...