如何在pt archiver中表达这一点?
DELETE * FROM Table1 JOIN ON Table1.id=Table2.id WHERE Table2.id>=1;
我找不到在pt archiver字符串中连接表1和表2的任何可能性。我试过了,但是表2的连接字符串丢失了:
pt-archiver --source h=127.0.0.1,D=db,t=Table1 --purge --where 'Table2.id >= 1'
请给我一些你的想法。
最佳答案
我已经完成了像您描述的那样的任务,在这里我使用pt archiver来归档还必须连接到另一个表的行。
pt-archiver --source h=host,D=db,t=child --purge \
--where 'EXISTS(SELECT * FROM parent WHERE col=child.col AND child.col>=1)'.
这可以工作,但我不确定如何以及在何处声明父表。有什么想法?
在pt archiver的源DSN中只声明一个表。这是本例中的
child
表。您没有在pt archiver选项中声明
parent
表。它只在--where
选项中指定的子查询中引用,与上面的示例完全相同。关于mysql - 将MySQL查询转换为Percona pt-archiver字符串,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/47203831/