2

我有以下查询。

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 可以在不使用子查询格式的情况下使用两次。:)

4

2 回答 2

9
DELETE  FROM T2
FROM    Schema.Table2 T2 
JOIN    Schema.Table1 T1 
ON      T1.ColumnName = T2.ColumnName 
WHERE   T1.SomeOtherColumn = 123456
于 2012-12-19T15:30:37.050 回答
3

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

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

(请注意,这仅在子查询返回单个值时才有效,否则将引发错误)

于 2012-12-19T15:35:13.567 回答