環境:MySQL5.6, InnoDB
mysqldumpは、--whereオプションを指定して条件に当てはまるデータのみ取得することができる。
4.5.4 mysqldump — データベースバックアッププログラム
このwhereオプション内でjoinを使いたい。
例:
books(id, title, author_id)
authors(id, name, age)
の2つのテーブルがあって、mysqldumpを使ってbooksのデータを取得したい。
ただし、その対象はauthorsのageが40以上のもののみ。
mysqldump -u user_name -p -h host_name --single-transaction --where "id in (select books.id from books inner join authors on books.author_id = authors.id where authors.age >= 40)"
このように指定することで、joinを使った条件を指定できた。