是否有可能使用一个SQL语句,多个表截断?
像这样:
truncate table #OBJ_AvailabilityTraining, #OBJ_AvailabilityHoliday, #Dates_temp;
Run Code Online (Sandbox Code Playgroud)
问候
Pan*_*wal 11
您可以像这样使用sp_MSforeachtable存储过程:
USE MyDatabase
EXEC sp_MSforeachtable 'TRUNCATE TABLE ?'
Run Code Online (Sandbox Code Playgroud)
或者您可以创建SQL语句
SELECT concat('TRUNCATE TABLE ', TABLE_NAME, ';')
FROM INFORMATION_SCHEMA.TABLES
WHERE TABLE_NAME LIKE 'TableName%'
Run Code Online (Sandbox Code Playgroud)
并运行以上SQL语句
不,但还有另一种选择:
SELECT 'TRUNCATE TABLE '+TABLE_NAME+ ';'
FROM INFORMATION_SCHEMA.TABLES
WHERE TABLE_NAME LIKE 'your-table-name%'
Run Code Online (Sandbox Code Playgroud)
示例:
SELECT 'TRUNCATE TABLE '+TABLE_NAME+ ';'
FROM INFORMATION_SCHEMA.TABLES
WHERE TABLE_NAME LIKE 'TBL_ORDERS_20%'
Run Code Online (Sandbox Code Playgroud)
现在您有以上Select
查询的结果
TRUNCATE TABLE TBL_ORDERS_2001
TRUNCATE TABLE TBL_ORDERS_2002
TRUNCATE TABLE TBL_ORDERS_2003
TRUNCATE TABLE TBL_ORDERS_2004
Run Code Online (Sandbox Code Playgroud)
或者你可以使用类似的东西
select 'Truncate table ' + TABLE_NAME from INFORMATION_SCHEMA.TABLES where TABLE_NAME in ('Table1', 'Table2')
Run Code Online (Sandbox Code Playgroud)
更新:
Query
在您的问题中查看示例中的表
truncate table #OBJ_AvailabilityTraining, #OBJ_AvailabilityHoliday, #Dates_temp
我想你想要Truncate
所有临时表.
你可以用这样的简单方法做到Query
这一点
select 'Truncate table ' + TABLE_NAME from tempdb.INFORMATION_SCHEMA.TABLES
Run Code Online (Sandbox Code Playgroud)
不,您只能使用TRUNCATE命令截断单个表.要截断多个表,您可以使用T-SQL并迭代表名以一次截断每个表.
DECLARE @delimiter CHAR(1),
@tableList VARCHAR(MAX),
@tableName VARCHAR(20),
@currLen INT
SET @delimiter = ','
SET @tableList = 'table1,table2,table3'
WHILE LEN(@tableList) > 0
BEGIN
SELECT @currLen =
(
CASE charindex( @delimiter, @tableList )
WHEN 0 THEN len( @tableList )
ELSE ( charindex( @delimiter, @tableList ) -1 )
END
)
SELECT @tableName = SUBSTRING (@tableList,1,@currLen )
TRUNCATE TABLE @tableName
SELECT tableList =
(
CASE ( len( @tableList ) - @currLen )
WHEN 0 THEN ''
ELSE right( @tableList, len( @tableList ) - @currLen - 1 )
END
)
END
Run Code Online (Sandbox Code Playgroud)
您可以在@tableList变量中将所有表名以逗号分隔,如果是前缀,则可以截断不同模式中的多个表.
小智 5
只需轻松输入此 MySQL 语句:
TRUNCATE TABLE yourtablename1;
TRUNCATE TABLE yourtablename2;
TRUNCATE TABLE yourtablename3;
Run Code Online (Sandbox Code Playgroud)
... 等等。
用你的名字改变你的表名。
不要忘记分号;