Что делает этот запрос? - PullRequest
0 голосов
/ 13 мая 2019

Я не уверен на человеческом языке, что этот запрос в конечном итоге будет делать в SQL Server.

Идея состоит в том, что если в обеих таблицах #Temp и #TempDuplPos существует порядок с суммой X, его следует удалить.из таблицы # Temp.

DELETE #Temp
FROM #Temp
INNER JOIN #TempDuplPos ON (#Temp.[OrderNumber] = #TempDuplPos.[OrderNumber])
AND (#Temp.[Amount] = #TempDuplPos.[Amount])

Что я сделал, чтобы проверить следующее:

SELECT 1 AS OrderNumber, 10 AS Amount
INTO #Temp

SELECT 1 AS OrderNumber, 10 AS Amount
INTO #TempDuplPos

INSERT INTO #Temp
VALUES (2,20)

INSERT INTO #TempDuplPos
VALUES (3,30)

DELETE #Temp
FROM #Temp
INNER JOIN #TempDuplPosON (#Temp.[OrderNumber] = #TempDuplPos.[OrderNumber])
AND (#Temp.[Amount] = #TempDuplPos.[Amount])

SELECT *
FROM #Temp

SELECT *
FROM #TempDuplPos

DROP TABLE #Temp
DROP TABLE #TempDuplPos

Похоже, что это делает работу, но я не уверен, что упустил что-то, что будетударил меня в большом наборе данных.Итак, мой вопрос, этот запрос делает то, что я хочу?Если нет, что он делает?Спасибо!

1 Ответ

1 голос
/ 13 мая 2019

Удаляет записи из таблицы #Temp, где существуют записи в #TempDuplPos с теми же OrderNumber и Amount.

Если вы хотите удалить записи только с определенной суммой, которую нужно добавитьwhere предложение:

DELETE #Temp
FROM #Temp
INNER JOIN #TempDuplPos 
    ON (#Temp.[OrderNumber] = #TempDuplPos.[OrderNumber])
    AND (#Temp.[Amount] = #TempDuplPos.[Amount])
WHERE #Temp.[Amount] = @Amount 
...