使用id = 0
删除数据库每个表中所有记录的最快方法是什么?
如果每个表都有第一列名为id
,那将很简单,但在我的情况下,一个表的第一列名为id_tag
,其他表为id_product
等。
我已经知道我可以通过以下方式获得第一列的名称:
SELECT COLUMN_NAME FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_SCHEMA = 'dbname' AND TABLE_NAME = 'ps_tag' LIMIT 1
但如何将其包含在DELETE
查询中?我需要这样的东西:
DELETE FROM 'ps_tag' WHERE [first_column] = 0
我的第一个想法是:
DELETE FROM 'ps_tag'
WHERE (SELECT COLUMN_NAME FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_SCHEMA = 'dbname' AND TABLE_NAME = 'ps_tag' LIMIT 1) = 0
但显然它不起作用。
答案 0 :(得分:1)
评论太长了。
虽然您可以设置动态SQL语句,但我经常发现这种类型的操作在Excel中更容易。编写查询以获取您感兴趣的列名和表名。
然后,将它们加载到Excel中。
在另一个单元格中,输入一个类似'delete from @table where @column = 1'
的字符串。
然后输入公式:
=substitute(substitute(<where the string is>, '@table', <tablename>), '@column', <columnname>))
将代码复制回数据库界面并执行它。
(任何电子表格都可以。我通常有Excel方便。)