2016-08-12 14 views
0

レコードは削除(ブール値)に設定されていますが、実際には削除されないシナリオがあります。これらの値のリストは、例えば、(のはViewToDeleteそれを呼びましょう)ビュー内に表示されます。SQL Server - 削除(x)where caluseに応じた行数

ID  DELETE 
-------------- 
1   1 
4   1 
5   1 

私はすべて一回で、このビューに存在するこれらの値を削除できるようにしたい一日の終わりに、これを達成することができますか?

DELETE FROM mytablename 
WHERE ID = ViewToDelete.ID 

--THIS WOULD WORK IF THERE WAS 1 VALUE, BUT FOR MULTIPLE VALUES 
--IT RETURNS AN ERROR AS I WOULD EXPECT 

答えて

7

あなたは、ビューにINGのJOINによってこれを行うことができます。

Delete M 
From MyTableName  M 
Join ViewToDelete V On V.Id = M.Id 
          And V.Delete = 1 
+0

また、DELETE = 1を追加する必要があります。 – Lamak

+0

@Lamak Good catch - added。 – Siyual

+0

は扱いがうまくいっていて、幸いなことにテストテーブル上にあったので、すべてのものを削除しました;)2年間私はSQLをやったことがあります。これほど簡単なことはしませんでした。助けてくれてありがとう – Crezzer7

1

ビューが1つだけのテーブルからすべてのデータをフェッチする場合は、単に

Delete from Viewtodelete where delete=1 

を書くことができます。

関連する問題