我想創建一個相當大的基礎的小備份(所以開發人員可以下載1-2gb而不是15gb)。在幾個查詢中使用結果集
爲了做到這一點,我複製了基礎,我運行截斷某些表(原木等)的幾個劇本,我想除了一些用戶(總是相同的用戶)刪除數據。
現在我有這樣的:
-- delete order details not in test accounts
DELETE FROM order_details WHERE Album_ID NOT IN (
SELECT Album_ID FROM albums WHERE User_ID IN (
SELECT User_ID FROM users
WHERE Email_ID LIKE '%@xxx.com'
OR Email_ID LIKE '%@yyy.com'
OR Email_ID LIKE '%@zzz.com'
)
)
DELETE FROM orders WHERE User_ID NOT IN (
SELECT User_ID FROM users
WHERE Email_ID LIKE '%@xxx.com'
OR Email_ID LIKE '%@yyy.com'
OR Email_ID LIKE '%@zzz.com'
)
-- delete albums not in test accounts
DELETE FROM albums WHERE User_ID NOT IN (
SELECT User_ID FROM users
WHERE Email_ID LIKE '%@xxx.com'
OR Email_ID LIKE '%@yyy.com'
OR Email_ID LIKE '%@zzz.com'
)
-- snip a few more of the same
正如你所看到的,我總是用在好幾個地方同SELECT User_ID FROM users WHERE Email_ID LIKE '%@xxx.com' OR Email_ID LIKE '%@yyy.com' OR...
子查詢。
你會怎麼做,所以你不必重複自己?
謝謝!
我並不認爲OP在這種情況下想從Users表中刪除,但級聯刪除可以節省一些刪除操作。在上面的例子中,order_details可以在專輯中刪除。 –
是的......這是一個傳統的數據庫,有幾百個表格就有3個外鍵。顯然,添加FK將永遠需要清理數據庫。所以,好主意,但不可能執行:( – thomasb