我想获得两个sql转储的区别。我必须在新文件中保存差异。差异应该是合法的查询!例如,如果我有一个包含以下内容的文件,
CREATE TABLE IF NOT EXISTS `newtable` (
`name` int(11) NOT NULL AUTO_INCREMENT,
`id` int(11) NOT NULL,
PRIMARY KEY (`name`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=2 ;
INSERT INTO `newtable` (`name`, `id`) VALUES
(1, 2);
和第二个文件,
CREATE TABLE IF NOT EXISTS `newtable` (
`name` int(11) NOT NULL AUTO_INCREMENT,
`id` int(11) NOT NULL,
PRIMARY KEY (`name`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=2 ;
INSERT INTO `newtable` (`name`, `id`) VALUES
(1, 2),
(4, 5);
然后我会得到,
INSERT INTO `newtable` (`name`, `id`) VALUES
(1, 2),
(4, 5);
那怎么可能呢?
答案 0 :(得分:1)
这是一种方法,假设两个表都没有重复:
select (case when max(src) = 1 then 'DELETED'
else 'ADDED'
end) as what, name, id
from ((select 1 as src, name, id
from newtable1 t
) union all
(select 2 as src, name, id
from newtable2 t
)
) t
group by name, id
having count(*) = 1
返回从一个表添加或删除行到另一个表的行。您可以使用insert
语句将这些结果插入另一个表 - 或者任何地方。