示例
假設存在一個產品信息表Procts,其表結構如下:
CREATETABLEProcts(
ProctIDint,
ProctNamenvarchar(40),
Unitchar(2),
UnitPricemoney
)
表中數據如圖:
*fromProcts_tempdroptableProcts_temp
這樣就完成了對表中重復記錄的刪除。無論表有多大,它的執行速度都是相當快的,而且因為幾乎不用寫語句,所以它也是很安全的
㈡ 怎樣避免在向資料庫中的表輸入數據時,在同一欄位內出現重復的內容
將該欄位設為主索引。(註:一定是資料庫中的表才行)
㈢ sql查詢結果有時候會出現重復數據
可能是 設計上存在問題, 或者 規則被破壞了。
也可能是sql語句,原先沒有考慮周全,有遺漏的地方,原先沒有出現問題,只是沒有這種情況的數據出現
查詢出 重復 數據,到資料庫表中 去查,
資料庫表中是否有 重復的2條數據, 如果有,那麼就是1的情況
如果 資料庫中 就是1條, 那麼就是2 的情況。
㈣ 如何刪除資料庫中的重復數據
有兩個意義上的重復記錄
①完全重復的記錄,也即所有欄位均重復的記錄。
②部分關鍵欄位重復的記錄,比如Name欄位重復,而其他欄位不一定重復或都重復可以忽略。
1、對於第一種重復,比較容易解決,使用
selectdistinct*fromtableName
這樣就可以得到無重復記錄的結果集。然後通過臨時表實現對數據的維護。
selectdistinct*into#TmpfromtableName
droptabletableName
select*intotableNamefrom#Tmp
droptable#Tmp
#Tmp為什麼系統參數,tableName為要操作的表名。
2、第二類重復問題通常要求保留重復記錄中的第一條記錄,操作方法如下:
假設有重復的欄位為Name,Address,要求得到這兩個欄位唯一的結果集
selectidentity(int,1,1)asautoID,*into#TmpfromtableName
selectmin(autoID)asautoIDinto#Tmp2from#TmpgroupbyName,autoID
select*from#TmpwhereautoIDin(selectautoIDfrom#tmp2)
最後一個select即得到了Name,Address不重復的結果集(但多了一個autoID欄位,實際寫時可以寫在select子句中省去此列)