一次从表中删除多行

时间:2012-07-13 07:05:13

标签: sql postgresql

我有一个名为person的表(包含用户的登录ID)。我正在测试我的应用程序并制作了几个测试用户。所以现在这个表有很多测试用户和一些普通用户。

我想知道如何删除所有测试用户?

使用DELETE login FROM person where login = 'test_user' ;逐个删除所有用户需要很长时间。

PS:测试用户的名字中不包含测试:/它们只是随机名称。

3 个答案:

答案 0 :(得分:5)

您是否有所有测试用户的列表?

如果是这样,您可以进行类似

的查询
DELETE FROM person WHERE login IN ('user1', 'user2', 'user3', ...);

修改

回应

  

我有一个有效用户列表,我想删除其余用户。 - Chankey Pathak

使用

DELETE FROM person WHERE login NOT IN ('user1', 'user2', 'user3', ...);

答案 1 :(得分:1)

您可以采用白名单方法:

如果您有要保留的用户列表,但想要删除不在该有效列表中的行,则可以使用:

DELETE FROM person WHERE login NOT IN (<listOfValid>)

如果您将所有有效用户存储在表格中,则可以执行以下操作:

DELETE a FROM person a
LEFT JOIN validpersons b ON a.name = b.name
WHERE b.name IS NULL 

答案 2 :(得分:0)

DELETE FROM person where login like '%test%'

这将删除名称中包含test

的所有用户