で削除されたレコードの値を使用して、私はあなたがお互いにそれらを実行することはできませんだと思う。このSQL Serverの
select * from Flat
WHERE Flat.nu in (delete top (1) from temp output deleted.nu)
で削除されたレコードの値を使用して、私はあなたがお互いにそれらを実行することはできませんだと思う。このSQL Serverの
select * from Flat
WHERE Flat.nu in (delete top (1) from temp output deleted.nu)
として葯クエリでそのIdで記録し、検索を削除する必要があります。
私は(一時的なテーブル)を使用することをお勧めします:tempIds(id int)
。
delete top(1) from temp
output deleted.id into tempIds;
注:これは、最初の行を削除するには、CTEを使用することをお勧めします は、このようなoutput
句を使用します。
次に、tempIds
テーブルを照会し、その後には、tempIds
をクリアします。
最善の中間テーブルを一時テーブルにする。 –
@TT。 [両方とも提案されている](https://blogs.msdn.microsoft.com/sqltips/2005/06/13/output-clause-in-insertupdatedelete-statements/);)。 –
Mkay、私はこのシナリオでは通常のテーブルを使用するのは大好きではありません。 –
このようにお試しください。お手伝いをすることがあります。
DECLARE @ID_CAPTURE TABLE (ID Int)
DELETE TOP(1) FROM TEMP
OUTPUT deleted.Nu into @ID_CAPTURE
SELECT * FROM FLAT WHERE NU IN (SELECT * FROM @ID_CAPTURE)
上記のスニペットは複数のレコードの場合にも機能します。
なぜそれが必要ですか?トリガーとカスケード削除を使用できるとき;)。 –
無効なFKを探したいだけなら、LEFT JOINを使い、 'null'結果をフィルタリングするだけです。 –
shA.t大きなクエリの一部 –