green777 2011-05-24 15:26 采纳率: 0%
浏览 811
已采纳

mysql如何多表联合按条件导出数据?

例如,我想导出table1中abc_id=1的记录以及与它联结的table2表中的相应数据,我用mysqldump的where参数似乎不可以联结表:
mysqldump -u root abc table1 table2 --where="abc_id=1 and table1_id in (select id from table1 where abc_id=1)" > example.sql
mysqldump: Couldn't execute 'SELECT /*!40001 SQL_NO_CACHE */ * FROM table1 WHERE abc_id=1 and table1_id in (select id from table1 where abc_id=1)': Unknown column 'table1_id' in 'IN/ALL/ANY subquery'

应该怎样导出这两个表中的数据呢?

  • 写回答

3条回答 默认 最新

  • horace_lee 2011-05-27 23:15
    关注

    -w 选项确实不支持join

    这是个定位问题,mysqldump是致力于,快速备份还原数据库的。如果你注意一下mysqldump导出的mysql文件,你会发现,里面有create insert,实际不是导出数据,而是,一系列语句直接运行就能还原数据,或者还原表结构。

    这就解释了为什么设计mysqldump的时候为什么没有-w 支持join的选项,因为,备份完了,运行还原的时候还原什么呢?

    也就是说,如果,楼主只是想纯导出数据,而不是想用来备份还原的话,直接select就行了,而要想备份还原的话,直接两个表备份就行

    也是个人理解哈

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

悬赏问题

  • ¥15 执行 virtuoso 命令后,界面没有,cadence 启动不起来
  • ¥50 comfyui下连接animatediff节点生成视频质量非常差的原因
  • ¥20 有关区间dp的问题求解
  • ¥15 多电路系统共用电源的串扰问题
  • ¥15 slam rangenet++配置
  • ¥15 有没有研究水声通信方面的帮我改俩matlab代码
  • ¥15 ubuntu子系统密码忘记
  • ¥15 信号傅里叶变换在matlab上遇到的小问题请求帮助
  • ¥15 保护模式-系统加载-段寄存器
  • ¥15 电脑桌面设定一个区域禁止鼠标操作