2012-07-13 104 views
-3

我有一個名爲person的表(其中包含用戶的登錄ID)。我正在測試我的應用程序並創建了多個測試用戶。所以現在這個表有很多測試用戶和一些普通用戶。一次從表中刪除多行

我想知道如何刪除所有測試用戶?

使用DELETE login FROM person where login = 'test_user' ;逐個刪除所有用戶將需要很長時間。

PS:測試用戶的名稱不包含測試:/它們只是隨機名稱。

+0

您將如何識別普通用戶和測試用戶? – Madhivanan 2012-07-13 07:08:56

+0

Pranav的回答有什麼問題?也許你應該將測試用戶的登錄記錄在表格中;那麼它很容易被刪除 – whytheq 2012-07-13 07:28:35

回答

5

所有用戶你有所有測試用戶的列表?

如果是這樣,你可以像

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

編輯

在響應查詢

本人有效用戶的列表,我想刪除其餘。 - Chankey Pathak

使用

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

我有一個有效的用戶列表,我想刪除其餘的。 – 2012-07-13 07:36:22

+4

@ChankeyPathak,那麼你可以使用'NOT IN(listOfValidUsers)' – 2012-07-13 07:37:26

+0

@ZaneBien:謝謝:) – 2012-07-13 07:37:58

0
DELETE FROM person where login like '%test%' 

這將刪除,他們的名字中含有test

+0

測試用戶的名字不包含測試:/他們只是隨機的名字。 – 2012-07-13 07:07:59

+0

你怎麼知道誰是測試用戶? – 2012-07-13 07:08:40

+0

這個答案不會起作用 – whytheq 2012-07-13 07:26:52

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