2つのデータベースからいくつかの行を削除するSQL Serverスクリプトを作成するのが難しいです。このトピックでは他にもいくつか質問がありましたが、このシナリオではうまくいかないようです。私はそのような基本的な質問について事前にお詫びしますが、これは検索に悩まされることがありません。私は多くのデータを照会しますが、テーブルへの書き込みはめったにありません。SQL Server:1つのテーブルの情報を使用して別のテーブルの行を削除する
私は
defects.roll_id = rollinfo.roll_idx
rollinfo.num_defects
呼ばrollinfo
テーブルの列がありますによってリンクされている2つのテーブルrollinfo
とdefects
を持っています。
この値が@MAX_DEFECTS
より大きい場合は、削除します。さらに、対応する行をdefects
テーブルから削除したいとします。この情報を選択
は簡単です:
SELECT
D.ROLL_ID,
R.ROLL_IDX
FROM
VISION17SLITTER.DBO.ROLLINFO R
INNER JOIN
VISION17SLITTER.DBO.DEFECTS D ON D.ROLL_ID = R.ROLL_IDX
WHERE
R.NUM_DEFECTS > @MAX_DEFECTS
私はいくつかの種類を行う必要がある場合、行は削除するだけで、SELECTステートメントを変更することにより、一度に二つのテーブルから削除されたりすることができれば、私は確認されませんでしたが"where exists"ステートメント。
レコードの場合、これは約200k行になるため、これを行う方法が複数ある場合は、どちらが効率的かを知りたいと思います。
おかげで、
ダン
あなたは一度だけの欠陥を削除するために、彼らは、関連テーブルから削除される必要がありますので使用は、 '外部キー制約DELETE'カスケードを使用することができます。 –
[1つのクエリで2つのテーブルから削除]の可能な複製(http://stackoverflow.com/questions/1233451/delete-from-two-tables-in-one-query) – pid