やりたい事
- 不規則な名前で作られた複数のtableを
- 毎回同じSQLで全て削除したい
条件
sqlのみで行う必要があります。
linuxコマンド等は挟めません。
sqlは複数に分けても大丈夫。
ただし都度sql文を作成はせず、コピペで行えるレベルで同じもの。
調べた事
ネット上には似たような疑問もありましたが、どれもlinuxコマンドを経由してやってました。
サブクエリ使えば出来るのかなーと思いましたが、「show tables」はサブクエリに使えない?
sqlにあまり詳しくないので申し訳ないです。
気になる質問をクリップする
クリップした質問は、後からいつでもMYページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。

回答3件
0
すべてのテーブルをテーブル定義ごと削除して良いということですよね?
であれば、drop database でデータベースごと削除しても良い気がしますが。。。
もし、「毎回」というのが、不規則でも毎回同じテーブルを削除するだけなら、drop table aaa, bbb, ccc, ddd, ... みたいな SQL を一度書いておいて、毎回コピペで実行することはできますね。
投稿2018/09/21 10:46
総合スコア1167
0
ベストアンサー
databaseを削除するのが手っ取り早いような気がしますが
procedureをつくってcallすればいいでしょう
まず、任意のDBに入り
SQL
1use 任意のdb
- procedure作成
SQL
1drop procedure if exists droptables; 2delimiter // 3create procedure droptables() 4begin 5declare a varchar(255); 6declare done int default 0; 7declare cur cursor for 8select TABLE_NAME from `information_schema`.tables where table_schema=database() and table_type = 'BASE TABLE'; 9declare continue handler for sqlstate '02000' set done=1; 10open cur; 11repeat 12fetch cur into a; 13if not done then 14set @sql=CONCAT('DROP TABLE IF EXISTS ' , a ); 15prepare stmt from @sql; 16execute stmt; 17end if; 18until done end repeat; 19close cur; 20end 21// 22delimiter ; 23
- 削除実行
SQL
1call droptables;
投稿2018/09/21 10:48
総合スコア117674
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/09/21 20:19

0
「show tables」はサブクエリに使えない?
のではなくDROP TABLE
文にはテーブル名を渡すしかなかったと思います。
https://dev.mysql.com/doc/refman/5.6/ja/drop-table.html
drop table
というキーワードでリファレンスを検索した結果がこちらです。
DROP TABLE
構文はそれ以外の拡張的な構文は用意されていないと思われます。
以下余談
CREATE TABLE
なら、CREATE TABLE...SELECTとかっていうのがあるんですけどね。
投稿2018/09/21 10:53
総合スコア1803
あなたの回答
tips
太字
斜体
打ち消し線
見出し
引用テキストの挿入
コードの挿入
リンクの挿入
リストの挿入
番号リストの挿入
表の挿入
水平線の挿入
プレビュー
質問の解決につながる回答をしましょう。 サンプルコードなど、より具体的な説明があると質問者の理解の助けになります。 また、読む側のことを考えた、分かりやすい文章を心がけましょう。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/09/21 10:50
2018/09/21 11:43