2016-09-19 53 views
1

我創建了一個表tbl_Dist列名DistrictDistCode,有那麼我已經刪除了使用此語句中的所有重複的值區表中的許多重複值:如何將執行表結果更新到同一個表中?

select distinct District from tbl_Dist; 

對其做,但我不獲取如何將上面執行的查詢的結果更新到表tbl_Dist

+0

不DistCode是在你的表的主鍵? –

+0

你的意思是這樣的:'DELETE FROM tbl_Dist WHERE Destrict IN(從tbl_Dist選擇不同的區域)''? – 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行的區域列是空白的。 –

+0

@shivanandsb不清楚。你能顯示樣本和預期的數據嗎? – NEER

+0

從tble TmpTable我想複製的列區表tbl_DIst,我已經嘗試過這種「UPDATE tbl_Dist SET tbl_Dist.District = dbo.TmpTable.District FROM dbo.TmpTable INNER JOIN tbl_Dist ON(dbo.TmpTable.DistCode = tbl_Dist。DistCode);」 –

0

如果你想保持這個查詢,你可以保持在一個視圖中寫通過view.The表的更新查詢將被更新

1

你需要DeleteUpdate

;with cte as 
(
Select row_number() over(partition by District order by (select null)) as rn,* 
From yourtable 
) 
Delete from cte where Rn > 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

如果我執行這個查詢,所有的行將得到刪除第一行右除? –

+0

@shivanandsb - 是的之前,檢查將通過'選擇' –

+0

將被刪除的記錄你能解釋到底這個腳本會去做什麼 它已被寫入親方式 –

0

試試這個腳本

DELETE FROM tbl_Dist 
WHERE District = District 
AND DistCode > DistCode 
相關問題