0

MFC Visual C++ と Oracle SQL Server を使用して開発しています。
アプリケーションが新しい行を挿入するときのID、値、および時間:いくつかのID、いくつかの値、および時間が挿入されているSQLテーブルがあります。

私の目標は、特定の時間の間に変更された値の行を削除することです。その間に挿入されたデータの値が正しくないためです。

キャッチはどこですか?その期間に更新されたすべての行を削除する必要はなく、特定の 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

配列を1列のtempTableに変換してから、IDが入っている宛先テーブルから削除します(temptableから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 に答える