我有一个包含100多个表的数据库。其中约有20个具有特定列,例如column1
。
我可以删除所有表,where column1="abc"
中的行,而无需指定每个表吗?
所以我需要这样的东西:
DELETE FROM [all tables] WHERE column1 = 'abc';
答案 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.使用您想要的代码运行游标!
祝你好运!