Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/72.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
删除特定范围内的数据时从sql server中删除所有数据_Sql_Sql Server_Sql Server 2008 - Fatal编程技术网

删除特定范围内的数据时从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
在my
KHanger\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';