eri*_*pey 2 sql-server-2008 sql-server
我试图弄清楚我正在尝试完成的这个删除语句。我了解如何从不在列中的表中删除(到 table2 的子查询)
我有两个多列的表,每个表有两列组成主键。我想你必须加入吗?我想要以下内容:
Delete From tbl1 left join tbl2
on tbl1.PK1 = tbl2.PK1 and tbl1.PK2 = tbl2.PK2
where tbl1_PK1 Not IN(
Select Distinct tbl2.PK1, tbl2.PK2 where DateStr >= GetDate()-365)
Run Code Online (Sandbox Code Playgroud)
我正在尝试从 tbl1 中删除行。这看起来接近正确吗?
编辑添加:
tbl1 PK1, PK2, Col1
tbl2 PK1、PK2、DateStr
Delete From tbl1 left join tbl2
on tbl1.PK1 = tbl2.PK1 and tbl1.PK2 = tbl2.PK2
where tbl1.PK1,tbl1.PK2 Not IN(
Select Distinct tbl2.PK1, tbl2.PK2 where DateStr >= GetDate()-365)
Run Code Online (Sandbox Code Playgroud)
运行 sqlfiddle 后剩下的应该是:
tbl1
('T', '222','asdf')
tbl2
('T', '222','9/26/2014')
Run Code Online (Sandbox Code Playgroud)
我怀疑你在追求这样的事情:
DELETE FROM tbl1
FROM tbl1
LEFT OUTER JOIN tbl2
ON tbl1.PK1 = tbl2.PK1
AND tbl1.PK2 = tbl2.PK2
AND tbl2.DateStr >= GETDATE() - 365
WHERE tbl2.PK1 IS NULL
AND tbl2.PK2 IS NULL
Run Code Online (Sandbox Code Playgroud)
是的,您有两个FROM
带有多表DELETE
语句的子句。这本质上只是一个反连接变成了删除。