第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機(jī)立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

SQL Server 2008上的批量刪除(是否有諸如批量復(fù)制(bcp)之類的功能用于刪除數(shù)據(jù)?)

SQL Server 2008上的批量刪除(是否有諸如批量復(fù)制(bcp)之類的功能用于刪除數(shù)據(jù)?)

HUWWW 2019-12-03 10:53:43
在SQL Server中有批量刪除的解決方案嗎?我不能使用TRUNCATE,因為我想使用WHERE來限制行。是否有類似批量復(fù)制(bcp)的刪除數(shù)據(jù)的功能?
查看完整描述

3 回答

?
繁花不似錦

TA貢獻(xiàn)1851條經(jīng)驗 獲得超4個贊

沒有。


您需要帶WHERE子句的DELETE:這是標(biāo)準(zhǔn)SQL。


您可以做的是批量刪除,如下所示:


SELECT 'Starting' --sets @@ROWCOUNT

WHILE @@ROWCOUNT <> 0

    DELETE TOP (xxx) MyTable WHERE ...

或者,如果您要刪除很高比例的行...


SELECT col1, col2, ... INTO #Holdingtable

           FROM MyTable WHERE ..opposite condition..

TRUNCATE TABLE MyTable

INSERT MyTable (col1, col2, ...)

           SELECT col1, col2, ... FROM #Holdingtable


查看完整回答
反對 回復(fù) 2019-12-03
?
眼眸繁星

TA貢獻(xiàn)1873條經(jīng)驗 獲得超9個贊

如果要刪除表的一部分而不是表的一部分,可以做幾件事TRUNCATE。


您可以將表的一部分選擇到新表中,然后將兩者切換,如下所示:


SELECT *

INTO tmp_MyTable

FROM MyTable

WHERE Key='Value'


IF @@ROWCOUNT > 0

BEGIN

    EXEC sp_rename MyTable, old_MyTable, NULL

    EXEC sp_rename tmp_MyTable, MyTable, NULL

    TRUNCATE old_MyTable 

END

其次,如果您使用的是分區(qū),則可以在相同的分區(qū)方案上創(chuàng)建相同的(空)表。如果該表是根據(jù)存檔/清除邏輯進(jìn)行分區(qū)的,則可以將一個分區(qū)塊從主表移至新表,然后截斷新表。例如:


ALTER TABLE MyTable

SWITCH PARTITION 15 TO purge_MyTable PARTITION 2 

GO; 


TRUNCATE TABLE purge_MyTable 

附言 分區(qū)在SQL 2005/08 Ent中可用。


希望這可以幫助!


查看完整回答
反對 回復(fù) 2019-12-03
?
慕妹3146593

TA貢獻(xiàn)1820條經(jīng)驗 獲得超9個贊

只是在一個臨時表上遇到了類似的問題,該臨時表在使用適當(dāng)?shù)逆i進(jìn)行擴(kuò)展時遇到了問題。

由于相關(guān)表只為我們一個地方引用,因此我們只用動態(tài)表名查詢替換了該引用,該查詢是用類似于gbn建議的“ select into”創(chuàng)建的。

這是可維護(hù)的,因為臨時表僅在代碼中的一個地方被引用,并且額外的數(shù)據(jù)庫調(diào)用和創(chuàng)建表的開銷在倉庫上下文中是合理的。如果您只有幾百條記錄或在代碼中多次引用該表,則此方法可能不起作用。


查看完整回答
反對 回復(fù) 2019-12-03
  • 3 回答
  • 0 關(guān)注
  • 1050 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號