从数组中出现的SQL DB中删除行

时间:2012-10-18 12:49:31

标签: c++ sql arrays mfc

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

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

渔获物在哪里?我不需要删除在该时间段内更新的所有行,只需删除具有在某个CArray上显示的ID的行。

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

由于

2 个答案:

答案 0 :(得分:0)

DELETE FROM table-name WHERE id in (...)

答案 1 :(得分: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)