u-ryo's blog

various information for coding...

Category: Sql

Using Where and Join in Mysqldump

| Comments

基本的にはmysqldumpでwhereにjoinを使うにある通り、

1
mysqldump -uusername -p DatabaseName tableA --single-transaction --were 'id IN (SELECT a.id FROM tableA a JOIN tableB b ON a.b_id=b.id WHERE b.name LIKE "%someone%")'

というわけですが、肝は、

  • --where中でJOINを使うためにsubqueryにする
  • --single-transactionを付けることでmysqldump: Couldn't execute 'SELECT... Table 'a' was not locked with LOCK TABLES (1100)と言われるのを防ぐ