Here is your solution
SELECT CONCAT('DELETE ',delete_list,' FROM ',table_list)
INTO @mass_delete_table_command
FROM
(
SELECT GROUP_CONCAT(table_name,'.*') delete_list,
GROUP_CONCAT(table_schema,'.',table_name) table_list
FROM
(
SELECT table_schema,table_name
FROM information_schema.tables
WHERE table_schema=database() AND
table_name IN
('jos_bet_details','jos_bet_1x2','jos_bet_1x2_best','jos_bet_1x2_prev',
'jos_bet_1x3','jos_bet_1x3_best','jos_bet_1x3_prev','jos_bet_hcp',
'jos_bet_hcp_best','jos_bet_hcp_prev','jos_bet_ou','jos_bet_ou_best',
'jos_bet_ou_prev','jos_bet_debug','jos_bet_deleted')
) ListOfTables
) DeleteParameters;
PREPARE s1 FROM @mass_delete_table_command;
EXECUTE s1;
DEALLOCATE PREPARE s1;
Here is the principle behind this: You want to use information_schema.tables to build the DELETE query dynamically for you.
First collect the names of the tables in a variable called 'mass_delete_table_command' as a delete list and a table list. Then, execute it as a prepared statement.
Here is sample code from creating 4 tables, adding records them, and zapping the records:
use test
DROP TABLE IF EXISTS t1;
DROP TABLE IF EXISTS t2;
DROP TABLE IF EXISTS t3;
DROP TABLE IF EXISTS t4;
CREATE TABLE t1 (n int NOT NULL);
CREATE TABLE t2 like t1;
CREATE TABLE t2 like t1;
CREATE TABLE t3 like t1;
CREATE TABLE t4 like t1;
INSERT INTO t1 VALUES (1),(2),(3),(4),(5),(6),(7);
INSERT INTO t2 SELECT * FROM t1;
INSERT INTO t3 SELECT * FROM t1;
INSERT INTO t4 SELECT * FROM t1;
SELECT A.*,B.*,C.*,D.* FROM
(SELECT COUNT(1) t1count FROM t1) A,
(SELECT COUNT(1) t2count FROM t2) B,
(SELECT COUNT(1) t3count FROM t3) C,
(SELECT COUNT(1) t4count FROM t4) D;
SELECT CONCAT('DELETE ',delete_list,' FROM ',table_list)
INTO @mass_delete_table_command
FROM
(
SELECT GROUP_CONCAT(table_name,'.*') delete_list,
GROUP_CONCAT(table_schema,'.',table_name) table_list
FROM
(
SELECT table_schema,table_name
FROM information_schema.tables
WHERE table_schema=database() AND
table_name IN ('t1','t2','t3','t4')
) ListOfTables
) DeleteParameters;
SELECT @mass_delete_table_command;
PREPARE s1 FROM @mass_delete_table_command;
EXECUTE s1;
DEALLOCATE PREPARE s1;
SELECT A.*,B.*,C.*,D.* FROM
(SELECT COUNT(1) t1count FROM t1) A,
(SELECT COUNT(1) t2count FROM t2) B,
(SELECT COUNT(1) t3count FROM t3) C,
(SELECT COUNT(1) t4count FROM t4) D;
I ran this in MySQL 5.5.12 on my PC. Here is the output:
mysql> use test
DROP TABLE IF EXISTS t1;
DROP TABLE IF EXISTS t2;
DROP TABLE IF EXISTS t3;
Database changed
mysql> DROP TABLE IF EXISTS t1;
CREATE TABLE t1 (n int NOT NULL);
CREATE TABLE t2 like t1;
CREATE TABLE t2 like t1;
CREATE TABLE t3 like t1;
CREATE TABLE t4 like t1;
INSERT INTO t1 VALUES (1),(2),(3),(4),(5),(6),(7);
INSERT INTO t2 SELECT * FROM t1;
INSERT INTO t3 SELECT * FROM t1;
INSERT INTO t4 SELECT * FROM t1;
SELECT A.*,B.*,C.*,D.* FROM
(SELECT COUNT(1) t1count FROM t1) A,
(SELECT COUNT(1) t2count FROM t2) B,
(SELECT COUNT(1) t3count FROM t3) C,
(SELECT COUNT(1) t4count FROM t4) D;
SELECT CONCAT('DELETE ',delete_list,' FROM ',table_list)
INTO @mass_delete_table_command
FROM
(
SELECT GROUP_CONCAT(table_name,'.*') delete_list,
GROUP_CONCAT(table_schema,'.',table_name) table_list
FROM
(
SELECT table_schema,table_name
FROM information_schema.tables
WHERE table_schema=database() AND
table_name IN ('t1','t2','t3','t4')
) ListOfTables
) DeleteParameters;
SELECT @mass_delete_table_command;
PREPARE s1 FROM @mass_delete_table_command;
EXECUTE s1;
DEALLOCATE PREPARE s1;
SELECT A.*,B.*,C.*,D.* FROM
(SELECT COUNT(1) t1count FROM t1) A,
(SELECT COUNT(1) t2count FROM t2) B,
(SELECT COUNT(1) t3count FROM t3) C,
(SELECT COUNT(1) t4count FROM t4) D;
Query OK, 0 rows affected (0.04 sec)
mysql> DROP TABLE IF EXISTS t2;
Query OK, 0 rows affected (0.03 sec)
mysql> DROP TABLE IF EXISTS t3;
Query OK, 0 rows affected (0.03 sec)
mysql> DROP TABLE IF EXISTS t4;
Query OK, 0 rows affected (0.03 sec)
mysql> CREATE TABLE t1 (n int NOT NULL);
Query OK, 0 rows affected (0.07 sec)
mysql> CREATE TABLE t2 like t1;
Query OK, 0 rows affected (0.10 sec)
mysql> CREATE TABLE t2 like t1;
ERROR 1050 (42S01): Table 't2' already exists
mysql> CREATE TABLE t3 like t1;
Query OK, 0 rows affected (0.07 sec)
mysql> CREATE TABLE t4 like t1;
Query OK, 0 rows affected (0.25 sec)
mysql> INSERT INTO t1 VALUES (1),(2),(3),(4),(5),(6),(7);
Query OK, 7 rows affected (0.08 sec)
Records: 7 Duplicates: 0 Warnings: 0
mysql> INSERT INTO t2 SELECT * FROM t1;
Query OK, 7 rows affected (0.05 sec)
Records: 7 Duplicates: 0 Warnings: 0
mysql> INSERT INTO t3 SELECT * FROM t1;
Query OK, 7 rows affected (0.07 sec)
Records: 7 Duplicates: 0 Warnings: 0
mysql> INSERT INTO t4 SELECT * FROM t1;
Query OK, 7 rows affected (0.06 sec)
Records: 7 Duplicates: 0 Warnings: 0
mysql> SELECT A.*,B.*,C.*,D.* FROM
-> (SELECT COUNT(1) t1count FROM t1) A,
-> (SELECT COUNT(1) t2count FROM t2) B,
-> (SELECT COUNT(1) t3count FROM t3) C,
-> (SELECT COUNT(1) t4count FROM t4) D;
+---------+---------+---------+---------+
| t1count | t2count | t3count | t4count |
+---------+---------+---------+---------+
| 7 | 7 | 7 | 7 |
+---------+---------+---------+---------+
1 row in set (0.00 sec)
mysql> SELECT CONCAT('DELETE ',delete_list,' FROM ',table_list)
-> INTO @mass_delete_table_command
-> FROM
-> (
-> SELECT GROUP_CONCAT(table_name,'.*') delete_list,
-> GROUP_CONCAT(table_schema,'.',table_name) table_list
-> FROM
-> (
-> SELECT table_schema,table_name
-> FROM information_schema.tables
-> WHERE table_schema=database() AND
-> table_name IN ('t1','t2','t3','t4')
-> ) ListOfTables
-> ) DeleteParameters;
Query OK, 1 row affected (0.00 sec)
mysql> SELECT @mass_delete_table_command;
+-----------------------------------------------------------------+
| @mass_delete_table_command |
+-----------------------------------------------------------------+
| DELETE t1.*,t2.*,t3.*,t4.* FROM test.t1,test.t2,test.t3,test.t4 |
+-----------------------------------------------------------------+
1 row in set (0.00 sec)
mysql> PREPARE s1 FROM @mass_delete_table_command;
Query OK, 0 rows affected (0.00 sec)
Statement prepared
mysql> EXECUTE s1;
Query OK, 28 rows affected (0.08 sec)
mysql> DEALLOCATE PREPARE s1;
Query OK, 0 rows affected (0.00 sec)
mysql> SELECT A.*,B.*,C.*,D.* FROM
-> (SELECT COUNT(1) t1count FROM t1) A,
-> (SELECT COUNT(1) t2count FROM t2) B,
-> (SELECT COUNT(1) t3count FROM t3) C,
-> (SELECT COUNT(1) t4count FROM t4) D;
+---------+---------+---------+---------+
| t1count | t2count | t3count | t4count |
+---------+---------+---------+---------+
| 0 | 0 | 0 | 0 |
+---------+---------+---------+---------+
1 row in set (0.00 sec)
mysql>
This will definitely work for you as long as
- you are standing in the correct database at the time
- you suppply the list of tables you want dropped to the subqueries
Give it a Try !!!