Работа с WITH в SQL

Всем доброго времени суток!

Имеется SQL код:

WITH contractor_ids AS
(
    SELECT id FROM contractors WHERE count IN (1, 2, 3, 4, 5, 6, 7, 8, 9, 10)
)

DELETE FROM properties WHERE contractor_id IN (SELECT id FROM contractor_ids)
GO

--WITH contractor_ids AS
--(
--  SELECT id FROM contractors WHERE count IN (1, 2, 3, 4, 5, 6, 7, 8, 9, 10)
--)

DELETE FROM contractors WHERE id IN (SELECT id FROM contractor_ids)
GO

Почему, если оставить комментарий, то код не работает? У WITH есть какая-то зона видимости? И как в таком случае поступить?


Ответы (1 шт):

Автор решения: Vitaliy Zlobin

GO - разделитель пакетов, это почти тоже самое, что на одной вкладке написать CTE, а на другой вкладке пытаться обратиться к ней.

В данном случае GO между запросом нужно удалить/закомментировать.

Код раздутый, тут достаточно 2х строк:

DELETE FROM properties WHERE contractor_id BETWEEN 1 AND 10
DELETE FROM contractors WHERE id BETWEEN 1 AND 10
→ Ссылка