Левый парнер сразу после «в @gutsTVP» нарушает это.
Ошибки на правом Paren по линии 12.
Если удалить этот первый набор скобок вокруг первого союза он работает, но он возвращает неверный ответ, то пересекаются применяются до первого союзаОшибка синтаксиса с использованием ведущей скобки с вставкой в
DECLARE @gutsTVP AS TABLE (sID INT PRIMARY KEY);
insert into @gutsTVP
(
select distinct [ftsIndexWordOnce].[sID]
from [ftsIndexWordOnce] with (nolock)
where [ftsIndexWordOnce].[wordID] in (1,2)
union
select distinct [ftsIndexWordOnceB].[sID]
from [ftsIndexWordOnceB] with (nolock)
where [ftsIndexWordOnceB].[wordID] in (5,6)
)
intersect
(
select distinct [ftsIndexWordOnce].[sID]
from [ftsIndexWordOnce] with (nolock)
where [ftsIndexWordOnce].[wordID] in (9,10,11,12)
union
select distinct [ftsIndexWordOnceB].[sID]
from [ftsIndexWordOnceB] with (nolock)
where [ftsIndexWordOnceB].[wordID] in (13,14,15,16)
)
select [guts].[sID] from @gutsTVP as [guts]
join [docSVsys] with (nolock)
on [docSVsys].[sID] = [guts].[sID]
order by [docSVsys].[sParID], [docSVsys].[sID]
Включено окончательное соединение, так как это является целью ТАБЛИЦЫ.
Если я присоединяюсь к производной таблице, он не знает о ПК и намного медленнее.
Да, я знаю, это может привести к повторному коэффициенту этого, чтобы у него не было левого переднего пара.
Это упрощенный запрос.
Нужно иметь возможность обрабатывать левый верхний левый палец.
Ниже приведено описание синтаксиса в работе.
Но теперь соединение происходит медленнее, так как оно не известно о ПК.
Не может иметь Sid как PK и принять нулевую
DECLARE @gutsTVP AS TABLE (sID INT PRIMARY KEY);
insert into @gutsTVP
select 0 -- real PK starts at 1
union
(
select distinct [ftsIndexWordOnce].[sID]
from [ftsIndexWordOnce] with (nolock)
where [ftsIndexWordOnce].[wordID] in (1,2)
union
select distinct [ftsIndexWordOnceB].[sID]
from [ftsIndexWordOnceB] with (nolock)
where [ftsIndexWordOnceB].[wordID] in (5,6)
)
intersect
(
select distinct [ftsIndexWordOnce].[sID]
from [ftsIndexWordOnce] with (nolock)
where [ftsIndexWordOnce].[wordID] in (9,10,11,12)
union
select distinct [ftsIndexWordOnceB].[sID]
from [ftsIndexWordOnceB] with (nolock)
where [ftsIndexWordOnceB].[wordID] in (13,14,15,16)
)
select [guts].[sID] from @gutsTVP as [guts]
join [docSVsys] with (nolock)
on [docSVsys].[sID] = [guts].[sID]
where [guts].[sID] > 0
order by [docSVsys].[sParID], [docSVsys].[sID]
Я мог бы удалить отчет, но он работает значительно медленнее - на самом деле. Это работает +1, но я хочу создать этот синтаксис линейным образом. Я обновил свою работу. – Paparazzi
Выглядит хорошо. Параны немного сложны - без INSERT ваш исходный запрос становится синтаксически правильным. Но когда начальный параграф сразу следует за INSERT, SQL Server ожидает список столбцов, а не набор значений. –
При дальнейшем тестировании это работает лучше, чем мой взлом – Paparazzi