方法一:
deletefrom表名where主鍵欄位名in(
selectmax(主鍵欄位名)as主鍵欄位名from表名groupby其他欄位havingcount(1)>1)
方法二:
select欄位列表into#tfrom表名groupby欄位列表
truncatetable表名
insertinto表名select*from#t
droptable#t
示例:
方法一:
deletefromtab_test2whereid=(selectmax(id)fromtab_test2groupbyid,uidhavingcount(1)>1)
方法二:注意:#t是臨時表,在tempdb資料庫中的臨時表節點下可以找到,sqlserver服務重啟就會消失的表.
selectid,uidinto#tfromtab_test2groupbyid,uid
truncatetabletab_test2
insertintotab_test2select*from#t
msdn:
在進行sql資料庫維護時,發現有幾行記錄明顯有錯誤卻刪除不了,一執行刪除命令就提示“已更新或刪除的行值要麼不能使該行成為唯一行,要麼改變了多個行(x行)。”表現為在:資料庫中出現了重複的鍵值或資料,當試圖刪除時錯誤提示資訊就出來了。建立的幾個表都沒有關鍵字,設定好關鍵字後問題解決。
微軟的官方網站對此問題也有說明,bug:您可能會收到當您嘗試使用sqlservermanagementstudio更新sqlserver2005中的表的行時微軟給了個替代方法:要變通解決此問題,建立sqlservermanagementstudio中的在新的查詢視窗。然後,執行sqlupdate語句更新表中的行。
2、然後會在資料庫的編輯視窗彈出一個可以執行sql語句的視窗,在該視窗輸入以下sql語句
例如:deletepyj_db.dbo.cellphone_relatedwherecellphone_num="111"
方法二:
其實利用insertinto做一些小的變換,這個問題就可迎刃而解了,具體步驟如下:
先將原用的表做個備份,根據條件將滿足條件的資料導到新的表來,再將原表清除,最後將備份表中的資料select過來即可。
第一步:在備份表中匯入需要的資料
insertintodatafile_backup
select*fromdatafilewhereyear(consumedate)=條件
第二步:清除原表中的資料
deletefromdatafile
第三步:從備份表中匯入資料
select*fromdatafile
方法一:
deletefrom表名where主鍵欄位名in(
selectmax(主鍵欄位名)as主鍵欄位名from表名groupby其他欄位havingcount(1)>1)
方法二:
select欄位列表into#tfrom表名groupby欄位列表
truncatetable表名
insertinto表名select*from#t
droptable#t
示例:
方法一:
deletefromtab_test2whereid=(selectmax(id)fromtab_test2groupbyid,uidhavingcount(1)>1)
方法二:注意:#t是臨時表,在tempdb資料庫中的臨時表節點下可以找到,sqlserver服務重啟就會消失的表.
selectid,uidinto#tfromtab_test2groupbyid,uid
truncatetabletab_test2
insertintotab_test2select*from#t
msdn:
在進行sql資料庫維護時,發現有幾行記錄明顯有錯誤卻刪除不了,一執行刪除命令就提示“已更新或刪除的行值要麼不能使該行成為唯一行,要麼改變了多個行(x行)。”表現為在:資料庫中出現了重複的鍵值或資料,當試圖刪除時錯誤提示資訊就出來了。建立的幾個表都沒有關鍵字,設定好關鍵字後問題解決。
微軟的官方網站對此問題也有說明,bug:您可能會收到當您嘗試使用sqlservermanagementstudio更新sqlserver2005中的表的行時微軟給了個替代方法:要變通解決此問題,建立sqlservermanagementstudio中的在新的查詢視窗。然後,執行sqlupdate語句更新表中的行。
方法一:
2、然後會在資料庫的編輯視窗彈出一個可以執行sql語句的視窗,在該視窗輸入以下sql語句
例如:deletepyj_db.dbo.cellphone_relatedwherecellphone_num="111"
方法二:
其實利用insertinto做一些小的變換,這個問題就可迎刃而解了,具體步驟如下:
先將原用的表做個備份,根據條件將滿足條件的資料導到新的表來,再將原表清除,最後將備份表中的資料select過來即可。
第一步:在備份表中匯入需要的資料
insertintodatafile_backup
select*fromdatafilewhereyear(consumedate)=條件
第二步:清除原表中的資料
deletefromdatafile
第三步:從備份表中匯入資料
select*fromdatafile