mysqldump , verilen tablo için NEREDE yan tümcesini çalıştırmak için --where seçeneğine sahiptir .
Bir birleştirme sorgusunu mysqldump yapmak mümkün olmamakla birlikte, her tablodan belirli satırları dışa aktarabilirsiniz, böylece her tablodan alınan her satır daha sonra birleşimde yer alacak.
Verilen sorgunuz için üç kez mysqldump uygulamanız gerekir:
Öncelikle, mysqld, tüm tablo3 satırlarının adlarını girin ('fee', 'fi', 'fo', 'fum'):
mysqldump -u... -p... --where="name in ('fee','fi','fo','fum')" mydb table3 > table3.sql
Daha sonra, mysqldump, ilk mysqldump'tan eşleşen table3_id değerlerine sahip tüm table2 satırlarını:
mysqldump -u... -p... --lock-all-tables --where="table3_id in (select id from table3 where name in ('fee','fi','fo','fum'))" mydb table2 > table2.sql
Ardından, mysqldump, ikinci mysqldump öğesinden eşleşen table1_id değerlerine sahip tüm tablo1 satırlarını girin:
mysqldump -u... -p... --lock-all-tables --where="id in (select table1_id from table2 where table3_id in (select id from table3 where name in ('fee','fi','fo','fum')))" mydb table1 > table1.sql
Not: İkinci ve üçüncü mysqldumps birden fazla tablonun kullanılmasını gerektirdiğinden, --lock-all-table kullanılmalıdır .
Yeni veritabanınızı oluşturun:
mysqladmin -u... -p... mysqladmin create newdb
Son olarak, üç mysqldumps'ı başka bir veritabanına yükleyin ve orada yeni veritabanında birleşmeyi deneyin.
mysql -u... -p... -D newdb < table1.sql
mysql -u... -p... -D newdb < table2.sql
mysql -u... -p... -D newdb < table3.sql
MySQL istemcisinde birleştirme sorgunuzu çalıştırın.
mysql> use newdb
mysql> select table1.id, table1.level, table2.name, table2.level
from table1 join table2 on table1.id = table2.table1_id
join table3 on table3.id = table2.table3_id
where table3.name in ('fee', 'fi', 'fo', 'fum');
Bir şans ver !!!
UYARI: Doğru dizine alınmazsa, ikinci ve üçüncü mysqldumps sonsuza kadar sürebilir !!!
Durumda, aşağıdaki sütunları dizine ekle:
ALTER TABLE table2 ADD INDEX (table1_id);
ALTER TABLE table2 ADD INDEX (table3_id);
ALTER TABLE table3 ADD INDEX (name,id);
ID'nin table3'ün ana anahtarı olduğunu varsayalım.