0

我使用 MFC Visual C++ 和 Oracle SQL Server 进行开发。
我有 SQL 表:ID、值和时间,当应用程序插入新行时:一些 ID、一些值和时间被插入。

我的目标是删除在特定时间之间更改的值行。因为在那段时间插入的数据值不正确。

问题在哪里?我不需要删除在该时间段内更新的所有行,只需要删除具有出现在某个 CArray 上的 ID 的行。

我可以通过 CArray 中的每个 ID 并在该时间段内对该特定 ID 执行删除查询(无论是否有条目) - 问题因为我可以有 150K 个 ID 进行迭代..

谢谢

4

2 回答 2

0
DELETE FROM table-name WHERE id in (...)
于 2012-10-18T12:58:21.510 回答
0

将您的数组转换为具有一列的临时表,然后从 ID 所在的目标表中删除(从临时表中选择 ID)

这是一个例子:

declare @RegionID varchar(50)
SET @RegionID = '853,834,16,467,841'
declare @S varchar(20)
if LEN(@RegionID) > 0 SET @RegionID = @RegionID + ',' 
CREATE TABLE #ARRAY(region_ID VARCHAR(20))

WHILE LEN(@RegionID) > 0 BEGIN
   SELECT @S = LTRIM(SUBSTRING(@RegionID, 1, CHARINDEX(',', @RegionID) - 1))
   INSERT INTO #ARRAY (region_ID) VALUES (@S)
   SELECT @RegionID = SUBSTRING(@RegionID, CHARINDEX(',', @RegionID) + 1, LEN(@RegionID))
END

delete from from your_table
where regionID IN (select region_ID from #ARRAY)
于 2012-10-18T12:58:46.017 回答