2016-12-24 4 views
0

Я тестировал производные табличные запросы. Когда я запускаю запрос ниже, он показывает ошибку.Недопустимое имя объекта - производная таблица

`Invalid object name 'result'.` 

Я действительно удивлен. Может кто-нибудь, пожалуйста, очистите мое сомнение, почему он бросает эту странную ошибку.

SELECT 
    * 
FROM (SELECT 
    1 AS ID, 
    'Mike' AS Name) [result] 
WHERE result.ID NOT IN (SELECT 
    ID 
FROM [result] 
WHERE Name = 'Mike') 

ответ

0

Вы не можете повторно использовать производную таблицу, используя этот синтаксис.
Используйте CTE (Common Table Expression) для этого.

with [result] as 
    (SELECT 
    1 AS ID, 
    'Mike' AS Name) 

SELECT 
    * 
FROM result 
WHERE result.ID NOT IN (SELECT 
    ID 
FROM [result] 
WHERE Name = 'Mike') 
+0

Может быть, лучше объяснить, почему я не могу повторно использовать производную таблицу с использованием этого синтаксиса? –

+1

Это просто не поддерживается языком, который предлагает другую альтернативу. –

+0

Спасибо за ваш ответ. :) –

Смежные вопросы