Sql 简单合并删除失败

Sql 简单合并删除失败,sql,sql-server,sql-server-2008,Sql,Sql Server,Sql Server 2008,我想通过引用tabletowol i、 来自 应删除以下行的第二个表(表2) FirstTable ColumnOne | TabletwoCol | TablethreeColumn | 1 | 2 | 5 | 2 | 3 | 6 | 3 | 8 | 10 | SecondeTabl

我想通过引用
tabletowol

i、 来自 应删除以下行的第二个表(表2)

FirstTable

ColumnOne | TabletwoCol | TablethreeColumn |
 1        |  2          |   5              |
 2        |  3          |   6              |
 3        |  8          |   10             |       

SecondeTable (TableTwo)   

TabletwoCol | Coln |
2           | ABC  |
3           | lmn  |
8           |  as  |
 1515       | addd |   
应该被删除

我写过

  2           | ABC  |
    3           | lmn  |
    8           |  as  |

我不知道它为什么不起作用。我觉得还可以。 也许你应该尝试使用
DELETE

 MERGE SecondeTable  PB USING  
             (SELECT DD.TabletwoCol  FROM   FirstTable DD) temptable
                              ON PB.TabletwoCol  =temptable.TabletwoCol 
                                WHEN MATCHED THEN
                                DELETE; 

我不知道为什么它不起作用。我觉得还可以。 也许你应该尝试使用
DELETE

 MERGE SecondeTable  PB USING  
             (SELECT DD.TabletwoCol  FROM   FirstTable DD) temptable
                              ON PB.TabletwoCol  =temptable.TabletwoCol 
                                WHEN MATCHED THEN
                                DELETE; 

如果我理解正确,您正在尝试从第二个表中删除第一个表中的匹配项。试试这个

DELETE PB
FROM SecondeTable AS PB
INNER JOIN FirstTable DD
  ON PB.TabletwoCol  = DD.TabletwoCol;

如果我理解正确,您正在尝试从第二个表中删除第一个表中的匹配项。试试这个

DELETE PB
FROM SecondeTable AS PB
INNER JOIN FirstTable DD
  ON PB.TabletwoCol  = DD.TabletwoCol;


谢谢你的快速回复@vercelli,但我特别想用merge@PushkarPhule. 确定:
是否从第二个表中选择*作为PB.TabletwoCol=DD.TabletwoCol上的PB内部联接第一个表DD返回任何内容?感谢@vercelli的快速响应,但我特别想用merge@PushkarPhule. 确定:
是否从第二个表中选择*作为PB.TabletwoCol=DD.TabletwoCol上的PB内部联接第一个表DD返回任何内容?您可以发布源表和目标表中的数据集吗添加了一些数据和简化的预期输出为什么需要在此处使用合并?这是一个简单的delete语句,这里不需要merge。@肖恩,这只是为了练习,你真的应该避免完全使用merge。当您遇到问题时,很难在以后进行调试,这通常是一种糟糕的做法。您可以发布源表和目标表中的数据集吗?添加了一些数据并简化了预期输出为什么需要在此处使用合并?这是一个简单的delete语句,这里不需要merge。@肖恩,这只是为了练习,你真的应该避免完全使用merge。当您遇到问题时,很难在以后进行调试,这通常是一种糟糕的做法。Drishya它看起来不错,但对我来说,在我的真实数据中,它执行失败了,没有删除任何行,如果代码正确(并且上面带有两个临时表的代码通常应该显示该代码是否有效),然后有三种可能:您复制代码供自己使用时出错,记录实际上不匹配(一个表可能有隐藏字符),或者表上有一个触发器阻止删除。我在您提供的数据集上测试了脚本,它正常工作。请检查您是否遗漏了我发布的脚本中的某些内容,或者您在使用此逻辑的表中没有匹配项。@Drishya我在查询中犯了一个愚蠢的错误,这很有效。。谢谢……非常感谢……:-)Drishya它看起来不错,但对我来说,在我的真实数据中,它执行了,失败了,没有删除任何行。如果代码是正确的(上面有两个临时表的代码通常会显示该代码是否有效),那么有三种可能:您复制代码供自己使用时出错,记录实际上不匹配(一个表可能有隐藏字符)或者表上有一个触发器阻止删除。我在您提供的数据集上测试了脚本,它成功了。请检查我发布的脚本中是否缺少某些内容,或者在使用此逻辑的表中是否没有匹配项。@Drishya我在查询中犯的愚蠢错误,这很有效。。谢谢……谢谢这么多…:-)