我有一個包含100多個表的數據庫。其中約20人有專門的專欄,說column1
。從所有表中刪除行
我可以刪除所有表,where column1="abc"
中的行,但不指定每個表嗎?
所以我需要的東西是這樣的:
DELETE FROM [all tables] WHERE column1 = 'abc';
我有一個包含100多個表的數據庫。其中約20人有專門的專欄,說column1
。從所有表中刪除行
我可以刪除所有表,where column1="abc"
中的行,但不指定每個表嗎?
所以我需要的東西是這樣的:
DELETE FROM [all tables] WHERE column1 = 'abc';
最簡單的方法可能是以下幾點:
SELECT
CONCAT('DELETE FROM ',TABLE_NAME," WHERE column1 = 'abc';") comd
FROM information_schema.COLUMNS
WHERE TABLE_SCHEMA = 'YOUR_DATABASE_NAME'
AND COLUMN_NAME ='column1';
該查詢會給你輸出象下面這樣:
DELETE FROM TABLE_1 WHERE column1 = 'abc';
DELETE FROM TABLE_2 WHERE column1 = 'abc';
DELETE FROM TABLE_3 WHERE column1 = 'abc';
DELETE FROM TABLE_4 WHERE column1 = 'abc';
.
.
.
現在複製這些DELETE
命令並執行所有。
注: 在其他的方式,你可以寫一個存儲的程序,你可以通過prepare statement
把這些generated command strings
成可執行的命令/查詢。
但是你可以選擇上面提到的最簡單的方法來繞過複雜性。
不,你不會得到一個錯誤。如果特定條目不存在,則不需要刪除。它會靜靜地運行。 – 1000111
創建一個遊標來遍歷varieble。 1.您可以選擇一個表列表SHOW表格---->到變量 2.創建一個光標http://www.mysqltutorial.org/mysql-cursor/ 3.使用您想要的代碼運行光標!
此致敬禮!
您需要創建一個動態查詢。使用'information_schema'通過'column1'獲取表格 –
只需查詢信息模式,獲取有問題的行的表名並構造查詢。除非需要多次運行此查詢,否則無需爲此跳過這些箍。 –