我不确定用这种语言最终会在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
看起来确实可以完成任务,但是我不确定我会错过一些会在大型数据集中打击我的东西。所以我的问题是,此查询是否在做我想要的?如果没有,那该怎么办?谢谢!
答案 0 :(得分:1)
它从#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