sql-server - 这个查询做什么?
问题描述
我不确定在人类语言中这个查询最终会在 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
看起来它可以完成这项工作,但我不确定我是否会错过一些会在大型数据集中打击我的东西。所以我的问题是,这个查询是否符合我的要求?如果没有,它有什么作用?谢谢!
解决方案
#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
推荐阅读
- javascript - 从关联数组中的 2 列收集数据
- javascript - Java脚本链接中的错误在visual s代码中不起作用
- javascript - 在测试中引用 POST 正文
- awk - 通过匹配来自另一个文件的 snp 列子集 GWAS 结果
- node.js - npm 安装不工作:“npm ERR!代码 ERR_SSL_WRONG_VERSION_NUMBER”
- c# - DocFX 可以在 VSCode 上运行吗?我收到以下错误
- javascript - 使用 Google Recaptcha v3 保护无效的登录尝试
- java - 只有我的服务前台是醒着的,不是服务的经理成员
- reactjs - 错误对象不可迭代(无法读取属性 Symbol(Symbol.iterator))
- mysql - 如何在 Rails 应用程序中克隆表并保持结构同步?