删除包含userid列的每个表中的每一行

时间:2013-10-04 14:57:52

标签: sql database postgresql

我继承了一个包含用户数据的大型数据库,并想知道是否可以删除除一个管理员用户以外的所有用户数据,以便重新部署新项目。

我正在寻找类似的东西:

DELETE FROM all_tables.all_rows WHERE行包含列userid和userid!= admin_user_id

奖励积分如果你也可以使它适用于奇数表,而不是“userid”他们使用“user”或“loggedin”作为列名。

我的数据库在postgresql中,但我猜测直截了当的SQL就可以了。

2 个答案:

答案 0 :(得分:0)

$query = "DELETE * FROM table WHERE EXISTS table.userid LIKE '%' AND table.userid != table.admin_user_id";

$query = "DELETE * FROM table WHERE EXISTS table.user LIKE '%' AND table.user != table.admin_user_id";

$query = "DELETE * FROM table WHERE EXISTS table.loggedin LIKE '%' AND table.loggedin != table.admin_user_id";

您可能需要使用<>而不是!=在POSTgresql中,我不知道。 未经测试,请先测试。

答案 1 :(得分:0)

你不能用普通的sql做到这一点。 首先,您需要找到这些表和列名称:

SELECT table_name, column_name from information_schema.columns
where column_name in ('userid ', 'user');

比你创建plpgsql函数,迭代这些数据,构建必要的删除查询字符串并作为动态查询执行:

execute 'delete from ' || x.table_name || ' where ' ...