我有一个包含100多个表的数据库。其中约20人有专门的专栏,说column1
。从所有表中删除行
我可以删除所有表,where column1="abc"
中的行,但不指定每个表吗?
所以我需要的东西是这样的:
DELETE FROM [all tables] WHERE column1 = 'abc';
我有一个包含100多个表的数据库。其中约20人有专门的专栏,说column1
。从所有表中删除行
我可以删除所有表,where column1="abc"
中的行,但不指定每个表吗?
所以我需要的东西是这样的:
DELETE FROM [all tables] WHERE column1 = 'abc';
最简单的方法可能是以下几点:
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
命令并执行所有。
注: 在其他的方式,你可以写一个存储的程序,你可以通过prepare statement
把这些generated command strings
成可执行的命令/查询。
但是你可以选择上面提到的最简单的方法来绕过复杂性。
不,你不会得到一个错误。如果特定条目不存在,则不需要删除。它会静静地运行。 – 1000111
创建一个游标来遍历varieble。 1.您可以选择一个表列表SHOW表格---->到变量 2.创建一个光标http://www.mysqltutorial.org/mysql-cursor/ 3.使用您想要的代码运行光标!
此致敬礼!
您需要创建一个动态查询。使用'information_schema'通过'column1'获取表格 –
只需查询信息模式,获取有问题的行的表名并构造查询。除非需要多次运行此查询,否则无需为此跳过这些箍。 –