回覆列表
  • 1 # 菠蘿小仙女南巷薄荷微

    方法一:

    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

  • 中秋節和大豐收的關聯?
  • 眾多配置加持的科沃茲,究竟實力怎樣?