从所有表中删除行

时间:2016-04-05 15:21:35

标签: mysql sql

我有一个包含100多个表的数据库。其中约有20个具有特定列,例如column1

我可以删除所有表,where column1="abc"中的行,而无需指定每个表吗?

所以我需要这样的东西:

DELETE FROM [all tables] WHERE column1 = 'abc';

2 个答案:

答案 0 :(得分:7)

最简单的方法可能如下:

SELECT 
CONCAT('DELETE FROM ',TABLE_NAME," WHERE column1 = 'abc';") comd
FROM information_schema.COLUMNS 
WHERE TABLE_SCHEMA = 'YOUR_DATABASE_NAME'
AND COLUMN_NAME ='column1';

此查询将为您提供如下输出:

DELETE FROM TABLE_1 WHERE column1 = 'abc';
DELETE FROM TABLE_2 WHERE column1 = 'abc';
DELETE FROM TABLE_3 WHERE column1 = 'abc';
DELETE FROM TABLE_4 WHERE column1 = 'abc';
.
.
.

现在复制这些DELETE命令并执行所有命令。

注意: 换句话说,您可以编写一个存储程序,您可以通过generated command strings将这些prepare statement转换为可执行命令/查询。

但是你可以选择我上面提到的最简单的方法来绕过复杂性。

答案 1 :(得分:0)

创建一个游标以迭代varieble。 1.您可以选择表SHOW表的列表---->要变量 2.创建游标http://www.mysqltutorial.org/mysql-cursor/ 3.使用您想要的代码运行游标!

祝你好运!