2012-04-05 12 views
0

注:可能であれば、私はSQL Server Managerで実行できるように、純粋なSQLクエリソリューションを探しています。データベース内のx + 1個の複製行を削除/更新する

私は一度入力されることを意図した一部のデータが複数回入力されており、現在、私はすべてが、company_idフィールドまたは更新PER 1つのエントリexportを削除いずれかの方法が必要であることを意味私のスクリプトでエラーが発生しましたインクルードが複数出現 long_descが複数出現していた

short_desc

マイデータがそうのように構成されています:company_idあたり1つのエントリの列

id | company_id | short_desc | long_desc | export 
    1  1234   word   text  0 
    2  1234   word   text  0 
    3  1234   word   text  0 
    4  1234   word   text  0 
    5  1234   word   text  0 
    6  1234   word   text  0 
    7  5678   another  foo  0 
    8  5678   another  foo  0 
    9  5678   another  foo  0 
    10  5678   another  foo  0 
    11  5678   another  foo  0 
    12  5678   another  foo  0 

私がいる限り、上記の例では、私は唯一の2つのエントリがexport=-1としてマーク/残っているだろうので、私は唯一の各の1を持っているとして削除/更新されたエントリは気にしません。

サブ選択とグループ化でさまざまなことをやってみましたが、私はいつも同じようにグループ化する必要があります(id)。私はちょうど長い朝だったのかわかりませんが、私はこれを行うための純粋なSQLの方法を考えることができないと私はそれを行うスクリプトを書くことを避けてみたいと思います。 exportフラグが設定されている場合、それは私が2008年

答えて

1
update table set export = -1 
where table.id in 
(
    select min(id) from table group by company_id,short_desc,long_desc 
    having count(1) > 1 
) 
+0

神ああ、長い朝は私が推測するSQL Serverのに使用しています0

に等しい

、私は削除させていただきます。どうもありがとう。 – webnoob

+0

よろしくお願いします.. – hkutluay

関連する問題