0

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

我正在寻找类似的东西:

DELETE FROM all_tables.all_rows WHERE row contains column userid AND userid != admin_user_id

如果您还可以使其适用于奇数表,而不是“userid”,他们使用“user”或“loggedin”作为列名,则可以获得奖励积分。

我的数据库在 postgresql 中,但我猜简单的 SQL 可以解决问题。

4

2 回答 2

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 中使用 <> 而不是 !=,我不知道。未经测试,请先测试。

于 2013-10-04T15:09:55.080 回答
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 ' ...
于 2013-10-04T15:13:09.933 回答