[SQL] 하나의 MySQL의 문에서 자르기 여러 테이블
SQL하나의 MySQL의 문에서 자르기 여러 테이블
하나 개의 SQL 문을 여러 테이블로 절단 할 가능성이 있습니까?
이 같이 :
truncate table #OBJ_AvailabilityTraining, #OBJ_AvailabilityHoliday, #Dates_temp;
문안 인사
해결법
-
==============================
1.아니, 당신은 단지 TRUNCATE 명령으로 하나의 테이블을자를 수 있습니다. 여러 테이블을 절단하기 위해 한 번에 각을 절단하는 테이블 이름을 통해 T-SQL과 반복 처리를 사용할 수 있습니다.
아니, 당신은 단지 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
당신은 당신의 테이블 이름의 쉼표 @tableList 변수에 분리 모두를 가질 수 있습니다 그들이 접두어 경우 네는 서로 다른 스키마에서 여러 테이블을자를 수 있습니다.
-
==============================
2.당신은 너무처럼 sp_MSforeachtable 저장 프로 시저를 사용할 수 있습니다 :
당신은 너무처럼 sp_MSforeachtable 저장 프로 시저를 사용할 수 있습니다 :
USE MyDatabase EXEC sp_MSforeachtable 'TRUNCATE TABLE ?'
또는 당신은 SQL 문을 만들 수 있습니다
SELECT concat('TRUNCATE TABLE ', TABLE_NAME, ';') FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME LIKE 'TableName%'
및 SQL 문 이상이 실행
-
==============================
3.호 그러나 대안이있다 :
호 그러나 대안이있다 :
SELECT 'TRUNCATE TABLE '+TABLE_NAME+ ';' FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME LIKE 'your-table-name%'
예 :
SELECT 'TRUNCATE TABLE '+TABLE_NAME+ ';' FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME LIKE 'TBL_ORDERS_20%'
지금 당신은 선택 쿼리 위 대한 결과 아래에 있습니다
TRUNCATE TABLE TBL_ORDERS_2001 TRUNCATE TABLE TBL_ORDERS_2002 TRUNCATE TABLE TBL_ORDERS_2003 TRUNCATE TABLE TBL_ORDERS_2004
또는 당신은 같은 것을 사용할 수 있습니다
select 'Truncate table ' + TABLE_NAME from INFORMATION_SCHEMA.TABLES where TABLE_NAME in ('Table1', 'Table2')
링크 1
링크 2
최신 정보:
귀하의 질문에 예 쿼리 테이블을 보면
잘라 내기 테이블 #OBJ_AvailabilityTraining, #OBJ_AvailabilityHoliday, #Dates_temp
난 당신이 모든 임시 테이블을 잘라 내기 할 생각합니다.
이 같은 간단한 쿼리를 수행 할 수 있습니다
select 'Truncate table ' + TABLE_NAME from tempdb.INFORMATION_SCHEMA.TABLES
-
==============================
4.보너스 예는 문자열로 시작하는 하나의 데이터베이스에있는 모든 테이블을 절단 ...
보너스 예는 문자열로 시작하는 하나의 데이터베이스에있는 모든 테이블을 절단 ...
SELECT CONCAT('TRUNCATE TABLE ', TABLE_NAME, ';') FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA = 'my_database_name' AND TABLE_NAME LIKE 'cache_%';
-
==============================
5.그냥 쉽게 MySQL의 문을 입력 :
그냥 쉽게 MySQL의 문을 입력 :
TRUNCATE TABLE yourtablename1; TRUNCATE TABLE yourtablename2; TRUNCATE TABLE yourtablename3;
... 등등.
당신과 함께 yourtablename을 변경합니다.
세미콜론을 잊지 마세요;
-
==============================
6.나는 그것이 매우 유사하지만, 잘라 내기 부분입니다, 나는이에 의해 코드를 변경할 수 있도록이 잘라 내기 문에 나에게 오류가 발생하기 때문에 IndoKnight에 의해 전송 된 코드를 변경해야했다 :
나는 그것이 매우 유사하지만, 잘라 내기 부분입니다, 나는이에 의해 코드를 변경할 수 있도록이 잘라 내기 문에 나에게 오류가 발생하기 때문에 IndoKnight에 의해 전송 된 코드를 변경해야했다 :
DECLARE @delimiter CHAR(1), @tableList VARCHAR(MAX), @tableName VARCHAR(100), @currLen INT, @truncateStatement VARCHAR(200) SET @delimiter = ',' SELECT @tableList = COALESCE(@tableList + ', ','') + CAST (TABLE_NAME AS varchar(100)) FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA = 'xxx' WHILE LEN(@tableList) > 0 BEGIN SELECT @currLen = ( CASE charindex( @delimiter, @tableList ) WHEN 0 THEN len( @tableList ) ELSE ( charindex( @delimiter, @tableList ) -1 ) END ) SELECT @tableName = TRIM(SUBSTRING (@tableList,1,@currLen )) SET @truncateStatement = 'TRUNCATE TABLE ' + QUOTENAME('xxx') + '.' + QUOTENAME(@tableName) EXEC (@truncateStatement) SELECT @tableList = ( CASE ( len( @tableList ) - @currLen ) WHEN 0 THEN '' ELSE right( @tableList, len( @tableList ) - @currLen - 1 ) END ) END
트릭은 테이블 이름과 스키마에 대괄호를 넣어 QUOTENAME을 사용하고 있습니다. 어쩌면 IndoKnight 솔루션은 데이터베이스의 최신 버전에서 더 이상 작동하지 않습니다. 나는 그것이 도움이되기를 바랍니다.
from https://stackoverflow.com/questions/15926826/truncate-multiple-tables-in-one-mysql-statement by cc-by-sa and MIT license
'SQL' 카테고리의 다른 글
[SQL] MySQL의에서 주소 IP 클라이언트를 검색 (0) | 2020.07.01 |
---|---|
[SQL] "주문은"열 이름에 대한 매개 변수를 사용하여 (1) | 2020.07.01 |
[SQL] 임의의 사용자가보기에 모든 권한을 부여하는 방법 (0) | 2020.07.01 |
[SQL] 캔 PreparedStatement.addBatch ()는 SELECT 쿼리에 사용? (0) | 2020.07.01 |
[SQL] MySQL은 여러 열에서 고유 값을 계산 (0) | 2020.07.01 |