2012-04-05 26 views
0

注意:如果可能,我正在尋找純SQL查詢解決方案,以便我可以在SQL Server管理器中運行它。在x + 1個數據庫中刪除/更新x + 1個重複行

我曾在我的腳本錯誤這意味着,這本來是一次輸入了一些數據已經輸入多次,現在我需要一種方法可以刪除所有,但1項PER company_id更新exportcompany_id 1個條目,其中柱:

short_desc的具有多於一個的發生 long_desc具有多於一個的發生

我的數據的結構如下所示:

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 

我不介意哪些條目被更新/只要我只有每個的1因此,在上面的示例中刪除,我將僅具有左/標記爲export=-1 2個條目。

我試圖做與子選擇和組不同的東西,但我總是要結束的分組上id以及所以我從來沒有得到重複。我不知道是否只是一個漫長的早晨,但我似乎無法想到一個純粹的SQL方式來做到這一點,我想嘗試避免寫一個腳本來做到這一點。

如果export標誌設置,我會直接刪除它等於我使用SQL Server 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

哦,上帝,早晨長長我猜0

。非常感謝。 – webnoob 2012-04-05 09:03:24

+0

不客氣 – hkutluay 2012-04-05 10:19:50