私はSQL Server 2005で、私たちのようなもの行うことができます知っている:TOP n結果をSQL 2000で削除するには?
がを考慮すると、SQL2Kで同じことを行うには、クエリ何ができるかX = 1
TBXのトップ10をDELETEを主キーは2つのFK列で構成されていますか?
私はSQL Server 2005で、私たちのようなもの行うことができます知っている:TOP n結果をSQL 2000で削除するには?
がを考慮すると、SQL2Kで同じことを行うには、クエリ何ができるかX = 1
TBXのトップ10をDELETEを主キーは2つのFK列で構成されていますか?
ハック、しかし:
;-pけれども、私は、自分自身をこれを書いていないでしょうSET ROWCOUNT 10
DELETE FROM tbX where X = 1
SET ROWCOUNT 0
(私は私の手を洗うようにオフだ...)
DELETE
FROM tbX
WHERE id IN (SELECT TOP 10 id FROM tbX WHERE X = 1)
まず、外部キーレコードを削除する必要があります。
私は 'ID' を持っていません。主キーは、2つのFK列で構成されています。 –
複合キーを扱う場合は、このように削除します。
delete from tblX
from tblx as aa
join
(
select top 10 * from tblX
) as bb
on
aa.key1 = bb.key1
and
aa.key2 = bb.key2
これはSQLでは動作しませんが、行に沿った何かが動作する可能性があります。
DELETE t
from tbx t
join (
select top 10 k1,k2 from tbx
) as t2 on t.k1 = t2.k1 and t.k2 = t2.k2
注:サブクエリでTOPが機能しない場合は、一時表に項目を挿入して参加してください。
これはSQL2012で私の作品:
;with window as (select top (12) * from PromoterQueue order by LogId)
delete from window
私はこのハッキングをカプラ時間に使ってきました。今、私は手を洗っています... –
私の以前の仕事はこの報告フレームワークを持っていましたが、set rowcountを使ってすべてのレポートを50,000行に制限する賢い考えがありました。大量のデータにチャレンジする必要がある場合は、結果が間違ってしまうことになります。 –
はい - 非常に厳密にスコープされ理解されている操作に制限しないと非常に危険です。実際、私はただ「非常に危険な」ところで止めることができます。 –