3

似たようなパターンを持つ複数のテーブルを削除するために、MySQLのどの構文を使用しますか?何かのようなもの:

DROP TABLES FROM `Database1` LIKE "SubTable*"

4

4 に答える 4

4

DROP TABLEはプリペアドステートメントでサポートされていたため、次のように実行できます-

SET @tables = NULL;
SELECT GROUP_CONCAT(table_schema, '.', table_name) INTO @tables FROM information_schema.tables 
  WHERE table_schema = 'Database1' AND table_name LIKE 'SubTable%';

SET @tables = CONCAT('DROP TABLE ', @tables);
PREPARE stmt1 FROM @tables;
EXECUTE stmt1;
DEALLOCATE PREPARE stmt1;
于 2011-03-25T08:28:10.033 に答える
3

この質問で述べたように、ここで与えられた応答(AngelinとDevart)は、以下のように、最初にgroup_concatの制限を増やすことなく、すべての状況で機能するわけではありません。

SET group_concat_max_len = 1024 * 1024 * 10;
于 2013-10-09T21:38:17.277 に答える
1

information_schemaいいえ。ただし、データベースからテーブル名を選択できます。

select table_name
  from information_schema.tables
 where table_schema = 'Database1'
   and table_name like 'SubTable%'

その後、結果セットのテーブル名を繰り返し、それらを削除します

于 2011-02-10T14:41:45.730 に答える
0

mysql> SELECT CONCAT( "DROP TABLE"、GROUP_CONCAT(TABLE_NAME))AS stmt

FROM information_schema.TABLES

WHERE TABLE_SCHEMA = "your_db_name" AND TABLE_NAME LIKE "ur condition" into outfile'/tmp/a.txt';

mysql> source /tmp/a.txt;

于 2012-08-23T07:58:02.847 に答える