У меня проблема с этим кодом. У меня есть дерево в моей базе данных, и мне нужно выбрать все узлы, кроме узла и его дочерних элементов, внука и т. д. Я сделал запрос WITH - он работает. Я могу выделить все большое семейство The Node. Но когда я пытаюсь сделать SELECT ... WHERE id NOT ID (а здесь большая семья), у меня возникают ошибки ...
КОД:
Select * from TALBE
where id NOT IN
(
WITH TempTable
AS
(
SELECT ...
UNION ALL
SELECT ...
)
Select id from TempTable;
);
или другая версия
Select * from TALBE
where id NOT IN
(
select id from
(
WITH TempTable
AS
(
SELECT ...
UNION ALL
SELECT ...
)
Select id from TempTable
)
);
В этом коде мне нужно иметь первые 2 строки. Это не мое решение - просто должно быть.
Ошибки:
Msg 156, Level 15, State 1, Line 4
Неправильный синтаксис рядом с ключевым словом 'WITH'.
Msg 319, Level 15, State 1, Line 4
Неверный синтаксис рядом с ключевым словом with. Если этот оператор является обычным табличным выражением, предложением xmlnamespaces или предложением контекста отслеживания изменений, предыдущий оператор должен заканчиваться точкой с запятой.
Msg 102, Level 15, State 1, Line 14
Неправильный синтаксис рядом с ')'.
WITH
всегда должен предшествовать;
(или, конечно, быть самым первым оператором в вашем скрипте) - как упоминал @SeanLange, не пытайтесь вложить свойWITH
во что-то еще - person DrCopyPaste   schedule 06.08.2014