我有一个包含 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
命令并全部执行。
注意:
换句话说,您可以编写一个存储程序,您可以在其中通过准备语句
将这些生成的命令字符串
转换为可执行的命令/查询。
但您可以更喜欢我在上面建议的最简单的方法来绕过复杂性。
关于mysql - 从所有表中删除行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36430545/