2016-09-19 14 views
1

私は列名DistrictDistCodeでテーブルtbl_Distを作成している、多くの重複する値が地区テーブルにあったので、私はこの文を使用して、すべての重複値を削除した:更新方法テーブル結果を同じテーブルに更新しましたか?

select distinct District from tbl_Dist; 

そのが行われ、私はないです上記の実行されたクエリの結果をテーブルtbl_Distに更新する方法を取得していますか?

+0

あなたのテーブルでDistCodeがプライマリキーではありませんか? –

+0

あなたは次のようなことを意味しますか? 'DELETE FROM tbl_Dist どこでIN(tbl_DistからDistinct Distinctを選択)'? – Blobonat

+0

いいえ、DistCodeはプライマリキー –

答えて

1

このスクリプトを試してみてください。このクエリを実行し、まず

を更新しました

-- Move temp table 
SELECT DISTINCT District INTO TmpTable FROM tbl_Dist 
-- Delete all data 
DELETE FROM tbl_Dist 
-- Insert data from temp table 
INSERT INTO tbl_Dist 
SELECT * FROM TmpTable 

。あなたは、メインテーブルの明確なデータと一時テーブル(tbl_Dist)を持つことになります

-- Move temp table 
SELECT DISTINCT District INTO TmpTable FROM tbl_Dist 

その後、

DELETE FROM tbl_Dist 

最後にすべてのデータを削除するには、すべての個別データを挿入するには、以下のクエリを実行するには、以下のクエリを実行しますメインテーブル。

-- Insert data from temp table 
INSERT INTO tbl_Dist 
SELECT * FROM TmpTable 
+0

はい、動作しますが、結果をテーブルに更新する方法?テーブル名を右クリックしてトップ200行を編集すると選択された場合District列は空白です.. –

+0

@shivanandsb明確ではありません。サンプルデータと期待データを表示できますか? TBLE TmpTableから – NEER

+0

私はこの「UPDATE tbl_Dist SETがtbl_Dist.District = dbo.TmpTable.District dbo.TmpTable INNER FROM(dbo.TmpTable.DistCode ON tbl_Dist のJOIN試してみましたが、テーブルtbl_DIstに列地区をコピーしたいです= tbl_Dist。DistCode); ' –

0

このクエリを維持したい場合は、そのview.Theのテーブルを介して更新クエリを書くビューでそれを保つことができるあなたがDeleteないUpdate

;with cte as 
(
Select row_number() over(partition by District order by (select null)) as rn,* 
From yourtable 
) 
Delete from cte where Rn > 1 

チェックする必要があります

1

に更新されます削除されるレコードはこれを使用します。

;with cte as 
(
Select row_number() over(partition by District order by (select null)) as rn,* 
From yourtable 
) 
Select * from cte where Rn > 1 
+0

このquerryを実行すると、すべての行が最初の行rightから削除されます。 –

+0

@shivanandsb - それ以前に 'select'で削除されるレコードを確認してください –

+0

このスクリプトが何をするのか正確に説明できます それはプロの方法で書かれています –

0

以下のようにすることができます

DELETE FROM tbl_Dist 
WHERE District = District 
AND DistCode > DistCode 
関連する問題