删除特定范围内的数据时从sql server中删除所有数据
我有一个带有以下列的表删除特定范围内的数据时从sql server中删除所有数据,sql,sql-server,sql-server-2008,Sql,Sql Server,Sql Server 2008,我有一个带有以下列的表Transaction\u tbl: transactid Tbarcode dtime 1 100 2013-04-16 14:15:47.243 2 101 2013-05-10 10:15:47.243 3 102 2014-02-20 02:15:48.000 transactid Hbarcode 1
Transaction\u tbl
:
transactid Tbarcode dtime
1 100 2013-04-16 14:15:47.243
2 101 2013-05-10 10:15:47.243
3 102 2014-02-20 02:15:48.000
transactid Hbarcode
1 21
2 22
3 23
在该表中,transact-id
是主键
我还有一个表KHanger\u tbl
包含以下列:
transactid Tbarcode dtime
1 100 2013-04-16 14:15:47.243
2 101 2013-05-10 10:15:47.243
3 102 2014-02-20 02:15:48.000
transactid Hbarcode
1 21
2 22
3 23
在myKHanger\u tbl
中,此Transact-ID是foregin键
我想移动日期范围您的删除查询将删除所有行,因为您与内部子查询没有关系,所以对于
KHandler\u tbl
中的每一行,子查询都存在。尝试使用以下方法:
DELETE T1
FROM KHanger_tbl T1
INNER JOIN Transaction_tbl T2
ON T1.transactid = T2.transactid
Where T2.dtime <='2013-12-30'
删除T1
来自KHanger_tbl T1
内部联接事务\u tbl T2
在T1.transact-id=T2.transact-id上
其中T2.dtime您不需要使用Oracle语法来删除SQL Server中的记录。SQL Server允许您执行以下操作:
DELETE FROM khanger_tbl a
INNER JOIN transaction_tbl b on a.transactid = b.transactid
WHERE b.dtime <= '2013-12-30';
从khanger_tbl a中删除
内部联接事务\u tbl b在a.TransacticID=b.TransacticID上
这里b.dtime没问题。祝你好运
DELETE FROM KHanger_tbl
WHERE transactid IN (SELECT transactid
FROM Transaction_tbl
WHERE dtime <='2013-12-30')
DELETE FROM khanger_tbl a
INNER JOIN transaction_tbl b on a.transactid = b.transactid
WHERE b.dtime <= '2013-12-30';