非常に大きなベースの小さなバックアップを作成したい (開発者が 15 GB ではなく ~1 ~ 2 GB をダウンロードできるようにするため)。
そのために、ベースをコピーし、いくつかのテーブル (ログなど) を切り捨てるいくつかのスクリプトを実行し、一部のユーザー (常に同じユーザー) を除いてデータを削除したいと考えています。
今私はこれを持っています:
-- 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...
、かなりの数の場所で常に同じサブクエリを使用しています。
繰り返す必要がないようにするにはどうすればよいでしょうか。
ありがとうございました !