2012-04-27 7 views
8

に別個の行を残してテーブルから重複行を削除します。最小限のSQL文でどのように達成するのですか?MSSQLクエリは、私は同じ<code>customer_id</code>と<code>deactivation_date</code>を有するテーブル<code>Log</code>から同様の行の最初の発生</strong>除くすべての重複行を削除<strong>に必要表

私はMS SQL Server 2008 Express Editionを使用しています。

+0

uは使用してrはどのようなクエリ.. –

+2

使用しているSQLサーバーのバージョンは何? – Arion

+0

@Arion sql 2008 express edition –

答えて

16

ような何か:

DELETE FROM Log WHERE LogId NOT IN 
(SELECT Min(LogId) FROM Log GROUP BY customer_id, deactivation_date) 
2

あなたは私たちに多くの仕事を提供しているわけではありません。しかし、おそらくこのような何か:

;WITH CTE 
AS 
(
    SELECT 
     ROW_NUMBER() OVER(PARTITION BY [Log].customer_id ORDER BY 
           deactivation_date) AS RowNbr, 
     [Log].* 
    FROM 
     [Log] 
) 
DELETE FROM [Log] 
WHERE EXISTS 
    (
     SELECT 
      NULL 
     FROM 
      CTE 
     WHERE 
      CTE.RowNbr>1 
      AND CTE.log_id =[Log].log_id 
    ) 
14

または:

with cte as (
    select row_number() over (partition by customer_id, deactivation_date 
    order by log_id) as rn 
    from Log) 
delete from cte 
    where rn > 1; 
関連する問題

 関連する問題