用 where 子句截断

l.l*_*ith 6 sql-server delete sql-server-2008-r2 truncate

我可以使用带有 where 子句的 truncate 命令吗?我需要从几个表中删除特定的行。

如何从整个数据库中删除特定数据?

SELECT DimEmployee.[FirstName], DimEmployee.[LastName], [SalesOrderNumber], [ShipDateKey]
    FROM DimEmployee
    JOIN [FactResellerSales] 
        ON DimEmployee.[EmployeeKey] = [FactResellerSales].[ProductKey] 
    WHERE DimEmployee.[FirstName] like 'kevin%' <--have to truncate this specific name from entire DB
Run Code Online (Sandbox Code Playgroud)

有没有其他方法可以从整个数据库中删除特定数据?

在我的数据库中有 172 个表。我想从整个数据库中删除特定名称及其对应的列。该名称分布在整个数据库中,因此我想一次性删除它,而不是转到每个表并单独删除它。

Eri*_*ing 10

不,Truncate 不能与WHERE子句一起使用。截断只是释放属于表(或分区)及其索引的所有页面。

来自BOL

-- Syntax for SQL Server and Azure SQL Database  

TRUNCATE TABLE   
    [ { database_name .[ schema_name ] . | schema_name . } ]  
    table_name  
    [ WITH ( PARTITIONS ( { <partition_number_expression> | <range> }   
    [ , ...n ] ) ) ]  
[ ; ]  
Run Code Online (Sandbox Code Playgroud)

如果您正在寻找一种更有效的方式来删除数据,我会从这里开始