我使用MFC Visual C ++和Oracle SQL Server进行开发 我有SQL表:ID,值和时间,当应用程序插入一个新行时:一些ID,一些值和时间被插入。
我的目标是删除在特定时间之间更改的值行。因为在此期间插入的数据具有不正确的值。
渔获物在哪里?我不需要删除在该时间段内更新的所有行,只需删除具有在某个CArray上显示的ID的行。
我可以浏览CArray中的每个ID并在该时间段内执行删除查询到该特定ID(是否有条目) - 问题因为我可以有150K ID来迭代 在.. ..
由于
答案 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)