一意性を決定する唯一のものがメール列である場合(例で示唆されているように)、これを試してください:
Update t set active= 0
From Table t
Where id !=
(Select Min(id) From table
Where email = t.email)
一意性を判断するために他の列も使用する必要がある場合は、それらをサブクエリの where 句に含めます。
Update t set active= 0
From Table t
Where id !=
(Select Min(id) From table
Where email = t.email
And addr = t.addr
And [Other columns])
コメントの問題に対処するには、空白のフィールドがあり、複数の行からデータを収集したい場合、はるかに複雑な問題があります。まず、値を持つ複数の行が存在する可能性があり、一部の行で他の行と異なる場合があります。第 2 に、データが入力されている場合にのみ一意性 (重複の場合) のテストにそれらを含めたい場合、一部の行に同じ 3 つの列があり、別の行のセットに別の列のセットがある場合に何をしますか?同じ値?
id addr city state zip phone
1 X Denver CO 71113 Blank
2 Y Blank CO Blank 212.901-3456
3 X Denver TX Blank Blank
4 Y ElPaso TX Blank 212.901-3456
5 X ElPaso Blank 71113 Blank
6 Y ElPaso Blank Blank 212.901-3456
次に、どの行が重複しているかをどのように判断しますか? これは複雑すぎて対処できません。一意性/重複を判断するために使用される列の固定セットに落ち着くことができれば、他の複数の行の1つから他の列のデータ値を収集する方法があります。 active には空白の値がありますが、一意性/重複を判断するために使用される列が異なる可能性がある場合 (実際のデータ値によって異なります)、これらの手法は機能しません。