我想从表中删除一些数据.我想删除内部联接中未包含的数据
我的查询到目前为止:
DELETE *how do you say delete what wasn't included in the inner join?* from dbo.Cloudpie c inner join dbo.cake p on c.cakeid = p.cakeid where cakeid > 1
在此先感谢所有提供的任何帮助:)!
你可以使用LEFT OUTER JOIN
:
DELETE c FROM dbo.Cloudpie c LEFT OUTER JOIN dbo.cake p ON c.cakeid = p.cakeid WHERE p.cakeid IS NULL AND c.cakeid > 1
甚至更简单,更不容易出错(在可空列上)使用NOT EXISTS
:
DELETE c FROM dbo.Cloudpie c WHERE NOT EXISTS( SELECT 1 FROM dbo.cake p WHERE p.cakeid = c.cakeid ) AND c.cakeid > 1
值得一读:http://www.sqlperformance.com/2012/12/t-sql-queries/left-anti-semi-join