【问题标题】:Delete from SQL Table that has Inner Join从具有内部联接的 SQL 表中删除
【发布时间】:2012-12-19 23:54:19
【问题描述】:

我有以下问题。

SELECT T2.* FROM Schema.Table1 T1 INNER JOIN
Schema.Table2 T2 ON T1.ColumnName = T2.ColumnName
WHERE  T1.SomeOtherColumn = 123456

我想删除上述查询中的所有内容(表 2 中基于 Inner Join 和 Where 子句具有匹配输出的所有内容。 我尝试了以下但没有工作。

DELETE Schema.T2.* FROM Schema.Table2 T2 INNER JOIN 
Schema.Table1 T1 ON T1.ColumnName = T2.ColumnName 
WHERE T1.SomeOtherColumn = 123456

请帮忙!

编辑:

谢谢你们。 TIL FROM 可以在不使用子查询格式的情况下使用两次。 :)

【问题讨论】:

    标签: sql tsql


    【解决方案1】:
    DELETE  FROM T2
    FROM    Schema.Table2 T2 
    JOIN    Schema.Table1 T1 
    ON      T1.ColumnName = T2.ColumnName 
    WHERE   T1.SomeOtherColumn = 123456
    

    【讨论】:

      【解决方案2】:

      您还可以修改查询以从带有子查询的单个表中进行选择,例如

      DELETE 
      FROM Table2
      WHERE Table2.ColumnName = (SELECT Table1.ColumnName 
                                 FROM Table1
                                 WHERE Table1.SomeOtherColumn = 123456)
      

      (注意只有当子查询返回单个值时才有效,否则会抛出错误)

      【讨论】:

        猜你喜欢
        • 2016-10-21
        • 1970-01-01
        • 1970-01-01
        • 2017-12-22
        • 2014-11-14
        • 1970-01-01
        • 2013-11-08
        • 2014-06-10
        • 1970-01-01
        相关资源
        最近更新 更多