【发布时间】:2019-09-30 05:15:37
【问题描述】:
我不确定在人类语言中这个查询最终会在 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
看起来它可以完成这项工作,但我不确定我是否会错过一些会在大型数据集中打击我的东西。所以我的问题是,这个查询是否符合我的要求?如果没有,它有什么作用?谢谢!
【问题讨论】:
-
你测试了吗?
-
您使用的是哪个 dbms? (该查询是特定于产品的。)
-
这会从 Columns 与其他 Table 的其他列匹配的表中删除。
-
是的@joakim-danielson 我当然在一个小数据集中测试了它。
-
这个问题是乱码——“想法”在代码之间跳来跳去,它做了什么,你想让一些代码做什么。当你说清楚时,它会问两个问题。请只问一个。无论如何,您可能不在乎其中之一。 PS 请在代码问题中提供minimal reproducible example--剪切&粘贴&可运行代码;具有期望和实际输出的示例输入(包括逐字错误消息);明确的规范和解释。这包括您可以提供的最少代码,即您显示的代码可以通过您显示的代码扩展为不可以。 (调试基础。)
标签: sql-server tsql join sql-delete