2013-10-04 102 views
0

我已經繼承了一個包含用戶數據的大型數據庫,並且想知道是否可以刪除除一個管理員用戶以外的所有用戶數據以重新部署新項目。刪除每個包含userid列的表中的每一行

我在尋找類似:!

DELETE FROM all_tables.all_rows WHERE行包含列用戶名和用戶id = admin_user_id

獎勵積分,如果你還可以使它成爲奇台工作,而不是在那裏「userid」他們使用「user」或「loggedin」作爲列名。

我的數據庫是在postgresql,但我猜直截了當的SQL會做的伎倆。

回答

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 ' ... 
+0

我可以理解你的第一個陳述,我可以看到這將如何給我相關的表,但我是postgresql的總新手,無法測試你的解決方案,但我害怕 –

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中,我不知道。 未經測試,請先測試。

+0

這看起來只會影響一張桌子,對吧? –

+0

一次只能運行一次查詢。 – Edward

+0

一次只能在一張桌子上,我想......我的目標是一次性在整個數據庫上運行這個功能。 –

相關問題